// Copyright 2021-2025 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Author: kenton@google.com (Kenton Varda)
//  Based on original Protocol Buffers design by
//  Sanjay Ghemawat, Jeff Dean, and others.
//
// A proto file we will use for unit testing.
//
// LINT: ALLOW_GROUPS, LEGACY_NAMES

// @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=js"
// @generated from file google/protobuf/unittest.proto (package proto2_unittest, edition 2023)
// option features.enum_type = CLOSED;
// option features.repeated_field_encoding = EXPANDED;
// option features.utf8_validation = NONE;
/* eslint-disable */

// We don't put this in a package within proto2 because we need to make sure
// that the generated code doesn't depend on being in the proto2 namespace.
// In test_util.h we do "using namespace unittest = proto2_unittest".

import type { GenEnum, GenExtension, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, extDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import type { ImportEnum, ImportMessage } from "./unittest_import_pb.js";
import { file_google_protobuf_unittest_import } from "./unittest_import_pb.js";
import type { Message } from "@bufbuild/protobuf";
import type { PublicImportMessage } from "./unittest_import_public_pb.js";

/**
 * Describes the file google/protobuf/unittest.proto.
 */
export const file_google_protobuf_unittest: GenFile = /*@__PURE__*/
  fileDesc("Ch5nb29nbGUvcHJvdG9idWYvdW5pdHRlc3QucHJvdG8SD3Byb3RvMl91bml0dGVzdCLfGgoMVGVzdEFsbFR5cGVzEhYKDm9wdGlvbmFsX2ludDMyGAEgASgFEhYKDm9wdGlvbmFsX2ludDY0GAIgASgDEhcKD29wdGlvbmFsX3VpbnQzMhgDIAEoDRIXCg9vcHRpb25hbF91aW50NjQYBCABKAQSFwoPb3B0aW9uYWxfc2ludDMyGAUgASgREhcKD29wdGlvbmFsX3NpbnQ2NBgGIAEoEhIYChBvcHRpb25hbF9maXhlZDMyGAcgASgHEhgKEG9wdGlvbmFsX2ZpeGVkNjQYCCABKAYSGQoRb3B0aW9uYWxfc2ZpeGVkMzIYCSABKA8SGQoRb3B0aW9uYWxfc2ZpeGVkNjQYCiABKBASFgoOb3B0aW9uYWxfZmxvYXQYCyABKAISFwoPb3B0aW9uYWxfZG91YmxlGAwgASgBEhUKDW9wdGlvbmFsX2Jvb2wYDSABKAgSFwoPb3B0aW9uYWxfc3RyaW5nGA4gASgJEhYKDm9wdGlvbmFsX2J5dGVzGA8gASgMEkkKDW9wdGlvbmFsZ3JvdXAYECABKAsyKy5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk9wdGlvbmFsR3JvdXBCBaoBAigCEkwKF29wdGlvbmFsX25lc3RlZF9tZXNzYWdlGBIgASgLMisucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlEkEKGG9wdGlvbmFsX2ZvcmVpZ25fbWVzc2FnZRgTIAEoCzIfLnByb3RvMl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZRJGChdvcHRpb25hbF9pbXBvcnRfbWVzc2FnZRgUIAEoCzIlLnByb3RvMl91bml0dGVzdF9pbXBvcnQuSW1wb3J0TWVzc2FnZRJGChRvcHRpb25hbF9uZXN0ZWRfZW51bRgVIAEoDjIoLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bRI7ChVvcHRpb25hbF9mb3JlaWduX2VudW0YFiABKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW0SQAoUb3B0aW9uYWxfaW1wb3J0X2VudW0YFyABKA4yIi5wcm90bzJfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW0SIQoVb3B0aW9uYWxfc3RyaW5nX3BpZWNlGBggASgJQgIIAhIZCg1vcHRpb25hbF9jb3JkGBkgASgJQgIIARIfChNvcHRpb25hbF9ieXRlc19jb3JkGFYgASgMQgIIARJTCh5vcHRpb25hbF9wdWJsaWNfaW1wb3J0X21lc3NhZ2UYGiABKAsyKy5wcm90bzJfdW5pdHRlc3RfaW1wb3J0LlB1YmxpY0ltcG9ydE1lc3NhZ2USTgoVb3B0aW9uYWxfbGF6eV9tZXNzYWdlGBsgASgLMisucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlQgIoARJZCiBvcHRpb25hbF91bnZlcmlmaWVkX2xhenlfbWVzc2FnZRgcIAEoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUICeAESFgoOcmVwZWF0ZWRfaW50MzIYHyADKAUSFgoOcmVwZWF0ZWRfaW50NjQYICADKAMSFwoPcmVwZWF0ZWRfdWludDMyGCEgAygNEhcKD3JlcGVhdGVkX3VpbnQ2NBgiIAMoBBIXCg9yZXBlYXRlZF9zaW50MzIYIyADKBESFwoPcmVwZWF0ZWRfc2ludDY0GCQgAygSEhgKEHJlcGVhdGVkX2ZpeGVkMzIYJSADKAcSGAoQcmVwZWF0ZWRfZml4ZWQ2NBgmIAMoBhIZChFyZXBlYXRlZF9zZml4ZWQzMhgnIAMoDxIZChFyZXBlYXRlZF9zZml4ZWQ2NBgoIAMoEBIWCg5yZXBlYXRlZF9mbG9hdBgpIAMoAhIXCg9yZXBlYXRlZF9kb3VibGUYKiADKAESFQoNcmVwZWF0ZWRfYm9vbBgrIAMoCBIXCg9yZXBlYXRlZF9zdHJpbmcYLCADKAkSFgoOcmVwZWF0ZWRfYnl0ZXMYLSADKAwSSQoNcmVwZWF0ZWRncm91cBguIAMoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuUmVwZWF0ZWRHcm91cEIFqgECKAISTAoXcmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2UYMCADKAsyKy5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2USQQoYcmVwZWF0ZWRfZm9yZWlnbl9tZXNzYWdlGDEgAygLMh8ucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlEkYKF3JlcGVhdGVkX2ltcG9ydF9tZXNzYWdlGDIgAygLMiUucHJvdG8yX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRNZXNzYWdlEkYKFHJlcGVhdGVkX25lc3RlZF9lbnVtGDMgAygOMigucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtEjsKFXJlcGVhdGVkX2ZvcmVpZ25fZW51bRg0IAMoDjIcLnByb3RvMl91bml0dGVzdC5Gb3JlaWduRW51bRJAChRyZXBlYXRlZF9pbXBvcnRfZW51bRg1IAMoDjIiLnByb3RvMl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bRIhChVyZXBlYXRlZF9zdHJpbmdfcGllY2UYNiADKAlCAggCEhkKDXJlcGVhdGVkX2NvcmQYNyADKAlCAggBEk4KFXJlcGVhdGVkX2xhenlfbWVzc2FnZRg5IAMoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUICKAESGQoNZGVmYXVsdF9pbnQzMhg9IAEoBToCNDESGQoNZGVmYXVsdF9pbnQ2NBg+IAEoAzoCNDISGgoOZGVmYXVsdF91aW50MzIYPyABKA06AjQzEhoKDmRlZmF1bHRfdWludDY0GEAgASgEOgI0NBIbCg5kZWZhdWx0X3NpbnQzMhhBIAEoEToDLTQ1EhoKDmRlZmF1bHRfc2ludDY0GEIgASgSOgI0NhIbCg9kZWZhdWx0X2ZpeGVkMzIYQyABKAc6AjQ3EhsKD2RlZmF1bHRfZml4ZWQ2NBhEIAEoBjoCNDgSHAoQZGVmYXVsdF9zZml4ZWQzMhhFIAEoDzoCNDkSHQoQZGVmYXVsdF9zZml4ZWQ2NBhGIAEoEDoDLTUwEhsKDWRlZmF1bHRfZmxvYXQYRyABKAI6BDUxLjUSHQoOZGVmYXVsdF9kb3VibGUYSCABKAE6BTUyMDAwEhoKDGRlZmF1bHRfYm9vbBhJIAEoCDoEdHJ1ZRIdCg5kZWZhdWx0X3N0cmluZxhKIAEoCToFaGVsbG8SHAoNZGVmYXVsdF9ieXRlcxhLIAEoDDoFd29ybGQSSgoTZGVmYXVsdF9uZXN0ZWRfZW51bRhRIAEoDjIoLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bToDQkFSEkcKFGRlZmF1bHRfZm9yZWlnbl9lbnVtGFIgASgOMhwucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JFSUdOX0JBUhJLChNkZWZhdWx0X2ltcG9ydF9lbnVtGFMgASgOMiIucHJvdG8yX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVtOgpJTVBPUlRfQkFSEiUKFGRlZmF1bHRfc3RyaW5nX3BpZWNlGFQgASgJOgNhYmNCAggCEh0KDGRlZmF1bHRfY29yZBhVIAEoCToDMTIzQgIIARIWCgxvbmVvZl91aW50MzIYbyABKA1IABJLChRvbmVvZl9uZXN0ZWRfbWVzc2FnZRhwIAEoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUgAEhYKDG9uZW9mX3N0cmluZxhxIAEoCUgAEhUKC29uZW9mX2J5dGVzGHIgASgMSAASGAoKb25lb2ZfY29yZBhzIAEoCUICCAFIABIgChJvbmVvZl9zdHJpbmdfcGllY2UYdCABKAlCAggCSAASVAoZb25lb2ZfbGF6eV9uZXN0ZWRfbWVzc2FnZRh1IAEoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUICKAFIABobCg1OZXN0ZWRNZXNzYWdlEgoKAmJiGAEgASgFGhoKDU9wdGlvbmFsR3JvdXASCQoBYRgRIAEoBRoaCg1SZXBlYXRlZEdyb3VwEgkKAWEYLyABKAUiOQoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQAxIQCgNORUcQ////////////AUINCgtvbmVvZl9maWVsZCKqAgoSTmVzdGVkVGVzdEFsbFR5cGVzEjIKBWNoaWxkGAEgASgLMiMucHJvdG8yX3VuaXR0ZXN0Lk5lc3RlZFRlc3RBbGxUeXBlcxIuCgdwYXlsb2FkGAIgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxI7Cg5yZXBlYXRlZF9jaGlsZBgDIAMoCzIjLnByb3RvMl91bml0dGVzdC5OZXN0ZWRUZXN0QWxsVHlwZXMSOwoKbGF6eV9jaGlsZBgEIAEoCzIjLnByb3RvMl91bml0dGVzdC5OZXN0ZWRUZXN0QWxsVHlwZXNCAigBEjYKC2VhZ2VyX2NoaWxkGAUgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc0ICKAAimQIKFFRlc3REZXByZWNhdGVkRmllbGRzEhwKEGRlcHJlY2F0ZWRfaW50MzIYASABKAVCAhgBEiYKGmRlcHJlY2F0ZWRfcmVwZWF0ZWRfc3RyaW5nGAQgAygJQgIYARJLChJkZXByZWNhdGVkX21lc3NhZ2UYAyABKAsyKy5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2VCAhgBEicKGWRlcHJlY2F0ZWRfaW50MzJfaW5fb25lb2YYAiABKAVCAhgBSAASNQoGbmVzdGVkGAUgASgLMiUucHJvdG8yX3VuaXR0ZXN0LlRlc3REZXByZWNhdGVkRmllbGRzQg4KDG9uZW9mX2ZpZWxkcyIbChVUZXN0RGVwcmVjYXRlZE1lc3NhZ2U6AhgBIiYKDkZvcmVpZ25NZXNzYWdlEgkKAWMYASABKAUSCQoBZBgCIAEoBSIwChJUZXN0UmVzZXJ2ZWRGaWVsZHNKBAgCEANKBAgPEBBKBAgJEAxSA2JhclIDYmF6Ih0KEVRlc3RBbGxFeHRlbnNpb25zKggIARCAgICAAiIkChdPcHRpb25hbEdyb3VwX2V4dGVuc2lvbhIJCgFhGBEgASgFIiQKF1JlcGVhdGVkR3JvdXBfZXh0ZW5zaW9uEgkKAWEYLyABKAUiugEKHFRlc3RNaXhlZEZpZWxkc0FuZEV4dGVuc2lvbnMSCQoBYRgBIAEoBRIJCgFiGAMgAygHKgQIAhADKgQIBBAFMjsKAWMSLS5wcm90bzJfdW5pdHRlc3QuVGVzdE1peGVkRmllbGRzQW5kRXh0ZW5zaW9ucxgCIAEoBVIBYzI7CgFkEi0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RNaXhlZEZpZWxkc0FuZEV4dGVuc2lvbnMYBCADKAdSAWQiuAEKCVRlc3RHcm91cBJGCg1vcHRpb25hbGdyb3VwGBAgASgLMigucHJvdG8yX3VuaXR0ZXN0LlRlc3RHcm91cC5PcHRpb25hbEdyb3VwQgWqAQIoAhI7ChVvcHRpb25hbF9mb3JlaWduX2VudW0YFiABKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW0aJgoNT3B0aW9uYWxHcm91cBIJCgFhGBEgASgFEgoKAnp6GFkgASgFIh4KElRlc3RHcm91cEV4dGVuc2lvbioICAEQgICAgAIihgQKE1Rlc3ROZXN0ZWRFeHRlbnNpb24aJAoXT3B0aW9uYWxHcm91cF9leHRlbnNpb24SCQoBYRgRIAEoBTI9CgR0ZXN0EiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOoHIAEoCToEdGVzdFIEdGVzdDJbChduZXN0ZWRfc3RyaW5nX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxjrByABKAlSFW5lc3RlZFN0cmluZ0V4dGVuc2lvbjKhAQoXb3B0aW9uYWxncm91cF9leHRlbnNpb24SIy5wcm90bzJfdW5pdHRlc3QuVGVzdEdyb3VwRXh0ZW5zaW9uGBAgASgLMjwucHJvdG8yX3VuaXR0ZXN0LlRlc3ROZXN0ZWRFeHRlbnNpb24uT3B0aW9uYWxHcm91cF9leHRlbnNpb25CBaoBAigCUhZvcHRpb25hbGdyb3VwRXh0ZW5zaW9uMogBCh9vcHRpb25hbF9mb3JlaWduX2VudW1fZXh0ZW5zaW9uEiMucHJvdG8yX3VuaXR0ZXN0LlRlc3RHcm91cEV4dGVuc2lvbhgWIAEoDjIcLnByb3RvMl91bml0dGVzdC5Gb3JlaWduRW51bVIcb3B0aW9uYWxGb3JlaWduRW51bUV4dGVuc2lvbiJqChJUZXN0Q2hpbGRFeHRlbnNpb24SCQoBYRgBIAEoCRIJCgFiGAIgASgJEj4KEm9wdGlvbmFsX2V4dGVuc2lvbhgDIAEoCzIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucyLSAgoWVGVzdENoaWxkRXh0ZW5zaW9uRGF0YRIJCgFhGAEgASgJEgkKAWIYAiABKAkSXwoSb3B0aW9uYWxfZXh0ZW5zaW9uGAMgASgLMkMucHJvdG8yX3VuaXR0ZXN0LlRlc3RDaGlsZEV4dGVuc2lvbkRhdGEuTmVzdGVkVGVzdEFsbEV4dGVuc2lvbnNEYXRhGsABChtOZXN0ZWRUZXN0QWxsRXh0ZW5zaW9uc0RhdGEScAoHZHluYW1pYxiAxK7DASABKAsyWy5wcm90bzJfdW5pdHRlc3QuVGVzdENoaWxkRXh0ZW5zaW9uRGF0YS5OZXN0ZWRUZXN0QWxsRXh0ZW5zaW9uc0RhdGEuTmVzdGVkRHluYW1pY0V4dGVuc2lvbnMaLwoXTmVzdGVkRHluYW1pY0V4dGVuc2lvbnMSCQoBYRgBIAEoBRIJCgFiGAIgASgFIlkKGFRlc3ROZXN0ZWRDaGlsZEV4dGVuc2lvbhIJCgFhGAEgASgFEjIKBWNoaWxkGAIgASgLMiMucHJvdG8yX3VuaXR0ZXN0LlRlc3RDaGlsZEV4dGVuc2lvbiJhChxUZXN0TmVzdGVkQ2hpbGRFeHRlbnNpb25EYXRhEgkKAWEYASABKAUSNgoFY2hpbGQYAiABKAsyJy5wcm90bzJfdW5pdHRlc3QuVGVzdENoaWxkRXh0ZW5zaW9uRGF0YSJZChBUZXN0UmVxdWlyZWRFbnVtEjoKDXJlcXVpcmVkX2VudW0YASABKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW1CBaoBAggDEgkKAWEYAiABKAUiYQoUVGVzdFJlcXVpcmVkT3BlbkVudW0SPgoNcmVxdWlyZWRfZW51bRgBIAEoDjIgLnByb3RvMl91bml0dGVzdC5Gb3JlaWduT3BlbkVudW1CBaoBAggDEgkKAWEYAiABKAUiuAEKFlRlc3RSZXF1aXJlZEVudW1Ob01hc2sSUAoNcmVxdWlyZWRfZW51bRgBIAEoDjIyLnByb3RvMl91bml0dGVzdC5UZXN0UmVxdWlyZWRFbnVtTm9NYXNrLk5lc3RlZEVudW1CBaoBAggDEgkKAWEYAiABKAUiQQoKTmVzdGVkRW51bRIPCgtVTlNQRUNJRklFRBAAEgcKA0ZPTxACEgcKA0JBUhBkEhAKA0JBWhD///////////8BIsICChVUZXN0UmVxdWlyZWRFbnVtTXVsdGkSUQoPcmVxdWlyZWRfZW51bV80GAQgASgOMjEucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZEVudW1NdWx0aS5OZXN0ZWRFbnVtQgWqAQIIAxILCgNhXzMYAyABKAUSUQoPcmVxdWlyZWRfZW51bV8yGAIgASgOMjEucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZEVudW1NdWx0aS5OZXN0ZWRFbnVtQgWqAQIIAxI8Cg9yZXF1aXJlZF9lbnVtXzEYASABKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW1CBaoBAggDIjgKCk5lc3RlZEVudW0SDwoLVU5TUEVDSUZJRUQQABIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQZCLmAwoXVGVzdFJlcXVpcmVkTm9NYXNrTXVsdGkSIgoTcmVxdWlyZWRfZml4ZWQzMl84MBhQIAEoB0IFqgECCAMSIgoTcmVxdWlyZWRfZml4ZWQzMl83MBhGIAEoB0IFqgECCAMSVAoQcmVxdWlyZWRfZW51bV82NBhAIAEoDjIzLnByb3RvMl91bml0dGVzdC5UZXN0UmVxdWlyZWROb01hc2tNdWx0aS5OZXN0ZWRFbnVtQgWqAQIIAxJTCg9yZXF1aXJlZF9lbnVtXzQYBCABKA4yMy5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkTm9NYXNrTXVsdGkuTmVzdGVkRW51bUIFqgECCAMSCwoDYV8zGAMgASgFElMKD3JlcXVpcmVkX2VudW1fMhgCIAEoDjIzLnByb3RvMl91bml0dGVzdC5UZXN0UmVxdWlyZWROb01hc2tNdWx0aS5OZXN0ZWRFbnVtQgWqAQIIAxI8Cg9yZXF1aXJlZF9lbnVtXzEYASABKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW1CBaoBAggDIjgKCk5lc3RlZEVudW0SDwoLVU5TUEVDSUZJRUQQABIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQZCK8BwoMVGVzdFJlcXVpcmVkEhAKAWEYASABKAVCBaoBAggDEg4KBmR1bW15MhgCIAEoBRIQCgFiGAMgASgFQgWqAQIIAxIOCgZkdW1teTQYBCABKAUSDgoGZHVtbXk1GAUgASgFEg4KBmR1bW15NhgGIAEoBRIOCgZkdW1teTcYByABKAUSDgoGZHVtbXk4GAggASgFEg4KBmR1bW15ORgJIAEoBRIPCgdkdW1teTEwGAogASgFEg8KB2R1bW15MTEYCyABKAUSDwoHZHVtbXkxMhgMIAEoBRIPCgdkdW1teTEzGA0gASgFEg8KB2R1bW15MTQYDiABKAUSDwoHZHVtbXkxNRgPIAEoBRIPCgdkdW1teTE2GBAgASgFEg8KB2R1bW15MTcYESABKAUSDwoHZHVtbXkxOBgSIAEoBRIPCgdkdW1teTE5GBMgASgFEg8KB2R1bW15MjAYFCABKAUSDwoHZHVtbXkyMRgVIAEoBRIPCgdkdW1teTIyGBYgASgFEg8KB2R1bW15MjMYFyABKAUSDwoHZHVtbXkyNBgYIAEoBRIPCgdkdW1teTI1GBkgASgFEg8KB2R1bW15MjYYGiABKAUSDwoHZHVtbXkyNxgbIAEoBRIPCgdkdW1teTI4GBwgASgFEg8KB2R1bW15MjkYHSABKAUSDwoHZHVtbXkzMBgeIAEoBRIPCgdkdW1teTMxGB8gASgFEg8KB2R1bW15MzIYICABKAUSEAoBYxghIAEoBUIFqgECCAMSOQoQb3B0aW9uYWxfZm9yZWlnbhgiIAEoCzIfLnByb3RvMl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZRI+CgltYXBfZmllbGQYIyADKAsyKy5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkLk1hcEZpZWxkRW50cnkaTgoNTWFwRmllbGRFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkOgI4ATJaCgZzaW5nbGUSIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY6AcgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZFIGc2luZ2xlMlgKBW11bHRpEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOkHIAMoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0UmVxdWlyZWRSBW11bHRpIt4BChNUZXN0UmVxdWlyZWRGb3JlaWduEjcKEG9wdGlvbmFsX21lc3NhZ2UYASABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkEjcKEHJlcGVhdGVkX21lc3NhZ2UYAiADKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkEg0KBWR1bW15GAMgASgFEkYKFW9wdGlvbmFsX2xhenlfbWVzc2FnZRgEIAEoCzIjLnByb3RvMl91bml0dGVzdC5OZXN0ZWRUZXN0QWxsVHlwZXNCAigBIscBChNUZXN0UmVxdWlyZWRNZXNzYWdlEjcKEG9wdGlvbmFsX21lc3NhZ2UYASABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkEjcKEHJlcGVhdGVkX21lc3NhZ2UYAiADKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkEj4KEHJlcXVpcmVkX21lc3NhZ2UYAyABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkQgWqAQIIAyKKAQoXVGVzdFJlcXVpcmVkTGF6eU1lc3NhZ2USMAoFY2hpbGQYASABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkQgIoARI9CgdyZWN1cnNlGAIgASgLMigucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZExhenlNZXNzYWdlQgIoASKnAwoZVGVzdE5lc3RlZFJlcXVpcmVkRm9yZWlnbhI5CgVjaGlsZBgBIAEoCzIqLnByb3RvMl91bml0dGVzdC5UZXN0TmVzdGVkUmVxdWlyZWRGb3JlaWduEjUKB3BheWxvYWQYAiABKAsyJC5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkRm9yZWlnbhINCgVkdW1teRgDIAEoBRI4Cg1yZXF1aXJlZF9lbnVtGAUgASgLMiEucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZEVudW0SRgoVcmVxdWlyZWRfZW51bV9ub19tYXNrGAYgASgLMicucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZEVudW1Ob01hc2sSQwoTcmVxdWlyZWRfZW51bV9tdWx0aRgHIAEoCzImLnByb3RvMl91bml0dGVzdC5UZXN0UmVxdWlyZWRFbnVtTXVsdGkSQgoQcmVxdWlyZWRfbm9fbWFzaxgJIAEoCzIoLnByb3RvMl91bml0dGVzdC5UZXN0UmVxdWlyZWROb01hc2tNdWx0aSJYChFUZXN0Rm9yZWlnbk5lc3RlZBJDCg5mb3JlaWduX25lc3RlZBgBIAEoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZSISChBUZXN0RW1wdHlNZXNzYWdlIioKHlRlc3RFbXB0eU1lc3NhZ2VXaXRoRXh0ZW5zaW9ucyoICAEQgICAgAIiWQoXVGVzdFBpY2tsZU5lc3RlZE1lc3NhZ2UaPgoNTmVzdGVkTWVzc2FnZRIKCgJiYhgBIAEoBRohChNOZXN0ZWROZXN0ZWRNZXNzYWdlEgoKAmNjGAEgASgFIjcKG1Rlc3RNdWx0aXBsZUV4dGVuc2lvblJhbmdlcyoECCoQKyoGCK8gEJQhKgoIgIAEEICAgIACIjQKGFRlc3RSZWFsbHlMYXJnZVRhZ051bWJlchIJCgFhGAEgASgFEg0KAmJiGP///38gASgFIlMKFFRlc3RSZWN1cnNpdmVNZXNzYWdlEjAKAWEYASABKAsyJS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlY3Vyc2l2ZU1lc3NhZ2USCQoBaRgCIAEoBSLmAwoUVGVzdE11dHVhbFJlY3Vyc2lvbkESMQoCYmIYASABKAsyJS5wcm90bzJfdW5pdHRlc3QuVGVzdE11dHVhbFJlY3Vyc2lvbkISRwoIc3ViZ3JvdXAYAiABKAsyLi5wcm90bzJfdW5pdHRlc3QuVGVzdE11dHVhbFJlY3Vyc2lvbkEuU3ViR3JvdXBCBaoBAigCEkkKCXN1Ymdyb3VwchgFIAMoCzIvLnByb3RvMl91bml0dGVzdC5UZXN0TXV0dWFsUmVjdXJzaW9uQS5TdWJHcm91cFJCBaoBAigCGj4KClN1Yk1lc3NhZ2USMAoBYhgBIAEoCzIlLnByb3RvMl91bml0dGVzdC5UZXN0TXV0dWFsUmVjdXJzaW9uQhqJAQoIU3ViR3JvdXASRQoLc3ViX21lc3NhZ2UYAyABKAsyMC5wcm90bzJfdW5pdHRlc3QuVGVzdE11dHVhbFJlY3Vyc2lvbkEuU3ViTWVzc2FnZRI2Cg9ub3RfaW5fdGhpc19zY2MYBCABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzGjsKCVN1Ykdyb3VwUhIuCgdwYXlsb2FkGAYgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcyJgChRUZXN0TXV0dWFsUmVjdXJzaW9uQhIwCgFhGAEgASgLMiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RNdXR1YWxSZWN1cnNpb25BEhYKDm9wdGlvbmFsX2ludDMyGAIgASgFItQBChFUZXN0SXNJbml0aWFsaXplZBJCCgtzdWJfbWVzc2FnZRgBIAEoCzItLnByb3RvMl91bml0dGVzdC5UZXN0SXNJbml0aWFsaXplZC5TdWJNZXNzYWdlGnsKClN1Yk1lc3NhZ2USTwoIc3ViZ3JvdXAYASABKAsyNi5wcm90bzJfdW5pdHRlc3QuVGVzdElzSW5pdGlhbGl6ZWQuU3ViTWVzc2FnZS5TdWJHcm91cEIFqgECKAIaHAoIU3ViR3JvdXASEAoBaRgCIAEoBUIFqgECCAMivQEKElRlc3REdXBGaWVsZE51bWJlchIJCgFhGAEgASgFEjsKA2ZvbxgCIAEoCzInLnByb3RvMl91bml0dGVzdC5UZXN0RHVwRmllbGROdW1iZXIuRm9vQgWqAQIoAhI7CgNiYXIYAyABKAsyJy5wcm90bzJfdW5pdHRlc3QuVGVzdER1cEZpZWxkTnVtYmVyLkJhckIFqgECKAIaEAoDRm9vEgkKAWEYASABKAUaEAoDQmFyEgkKAWEYASABKAUiSgoQVGVzdEVhZ2VyTWVzc2FnZRI2CgtzdWJfbWVzc2FnZRgBIAEoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXNCAigAIkkKD1Rlc3RMYXp5TWVzc2FnZRI2CgtzdWJfbWVzc2FnZRgBIAEoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXNCAigBIqUDChRUZXN0TGF6eVJlcXVpcmVkRW51bRJOChtvcHRpb25hbF9yZXF1aXJlZF9vcGVuX2VudW0YASABKAsyJS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkT3BlbkVudW1CAigBEkUKFm9wdGlvbmFsX3JlcXVpcmVkX2VudW0YAiABKAsyIS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkRW51bUICKAESUwoeb3B0aW9uYWxfcmVxdWlyZWRfZW51bV9ub19tYXNrGAMgASgLMicucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZEVudW1Ob01hc2tCAigBElAKHG9wdGlvbmFsX3JlcXVpcmVkX2VudW1fbXVsdGkYBCABKAsyJi5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkRW51bU11bHRpQgIoARJPChlvcHRpb25hbF9yZXF1aXJlZF9ub19tYXNrGAUgASgLMigucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZE5vTWFza011bHRpQgIoASJVChdUZXN0TGF6eU1lc3NhZ2VSZXBlYXRlZBI6ChByZXBlYXRlZF9tZXNzYWdlGAEgAygLMiAucHJvdG8yX3VuaXR0ZXN0LlRlc3RMYXp5TWVzc2FnZSKHAgoSVGVzdEVhZ2VyTWF5YmVMYXp5EjIKC21lc3NhZ2VfZm9vGAEgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxIyCgttZXNzYWdlX2JhchgCIAEoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMSRgoLbWVzc2FnZV9iYXoYAyABKAsyMS5wcm90bzJfdW5pdHRlc3QuVGVzdEVhZ2VyTWF5YmVMYXp5Lk5lc3RlZE1lc3NhZ2UaQQoNTmVzdGVkTWVzc2FnZRIwCgZwYWNrZWQYASABKAsyIC5wcm90bzJfdW5pdHRlc3QuVGVzdFBhY2tlZFR5cGVzIvwBChhUZXN0TmVzdGVkTWVzc2FnZUhhc0JpdHMSWAoXb3B0aW9uYWxfbmVzdGVkX21lc3NhZ2UYASABKAsyNy5wcm90bzJfdW5pdHRlc3QuVGVzdE5lc3RlZE1lc3NhZ2VIYXNCaXRzLk5lc3RlZE1lc3NhZ2UahQEKDU5lc3RlZE1lc3NhZ2USJAocbmVzdGVkbWVzc2FnZV9yZXBlYXRlZF9pbnQzMhgBIAMoBRJOCiVuZXN0ZWRtZXNzYWdlX3JlcGVhdGVkX2ZvcmVpZ25tZXNzYWdlGAIgAygLMh8ucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlIt0DChdUZXN0Q2FtZWxDYXNlRmllbGROYW1lcxIWCg5QcmltaXRpdmVGaWVsZBgBIAEoBRITCgtTdHJpbmdGaWVsZBgCIAEoCRIvCglFbnVtRmllbGQYAyABKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW0SNQoMTWVzc2FnZUZpZWxkGAQgASgLMh8ucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlEhwKEFN0cmluZ1BpZWNlRmllbGQYBSABKAlCAggCEhUKCUNvcmRGaWVsZBgGIAEoCUICCAESHgoWUmVwZWF0ZWRQcmltaXRpdmVGaWVsZBgHIAMoBRIbChNSZXBlYXRlZFN0cmluZ0ZpZWxkGAggAygJEjcKEVJlcGVhdGVkRW51bUZpZWxkGAkgAygOMhwucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25FbnVtEj0KFFJlcGVhdGVkTWVzc2FnZUZpZWxkGAogAygLMh8ucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlEiQKGFJlcGVhdGVkU3RyaW5nUGllY2VGaWVsZBgLIAMoCUICCAISHQoRUmVwZWF0ZWRDb3JkRmllbGQYDCADKAlCAggBItMBChJUZXN0RmllbGRPcmRlcmluZ3MSEQoJbXlfc3RyaW5nGAsgASgJEg4KBm15X2ludBgBIAEoAxIQCghteV9mbG9hdBhlIAEoAhJTChdvcHRpb25hbF9uZXN0ZWRfbWVzc2FnZRjIASABKAsyMS5wcm90bzJfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdzLk5lc3RlZE1lc3NhZ2UaJwoNTmVzdGVkTWVzc2FnZRIKCgJvbxgCIAEoAxIKCgJiYhgBIAEoBSoECAIQCyoECAwQZSKrAQoXVGVzdEV4dGVuc2lvbk9yZGVyaW5nczESEQoJbXlfc3RyaW5nGAEgASgJMn0KE3Rlc3RfZXh0X29yZGVyaW5nczESIy5wcm90bzJfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdzGA0gASgLMigucHJvdG8yX3VuaXR0ZXN0LlRlc3RFeHRlbnNpb25PcmRlcmluZ3MxUhF0ZXN0RXh0T3JkZXJpbmdzMSLyAgoXVGVzdEV4dGVuc2lvbk9yZGVyaW5nczISEQoJbXlfc3RyaW5nGAEgASgJGsQBChdUZXN0RXh0ZW5zaW9uT3JkZXJpbmdzMxIRCglteV9zdHJpbmcYASABKAkylQEKE3Rlc3RfZXh0X29yZGVyaW5nczMSIy5wcm90bzJfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdzGA4gASgLMkAucHJvdG8yX3VuaXR0ZXN0LlRlc3RFeHRlbnNpb25PcmRlcmluZ3MyLlRlc3RFeHRlbnNpb25PcmRlcmluZ3MzUhF0ZXN0RXh0T3JkZXJpbmdzMzJ9ChN0ZXN0X2V4dF9vcmRlcmluZ3MyEiMucHJvdG8yX3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVyaW5ncxgMIAEoCzIoLnByb3RvMl91bml0dGVzdC5UZXN0RXh0ZW5zaW9uT3JkZXJpbmdzMlIRdGVzdEV4dE9yZGVyaW5nczIitgcKGFRlc3RFeHRyZW1lRGVmYXVsdFZhbHVlcxI/Cg1lc2NhcGVkX2J5dGVzGAEgASgMOihcMDAwXDAwMVwwMDdcMDEwXDAxNFxuXHJcdFwwMTNcXFwnXCJcMzc2EiAKDGxhcmdlX3VpbnQzMhgCIAEoDToKNDI5NDk2NzI5NRIqCgxsYXJnZV91aW50NjQYAyABKAQ6FDE4NDQ2NzQ0MDczNzA5NTUxNjE1EiAKC3NtYWxsX2ludDMyGAQgASgFOgstMjE0NzQ4MzY0NxIpCgtzbWFsbF9pbnQ2NBgFIAEoAzoULTkyMjMzNzIwMzY4NTQ3NzU4MDcSJwoScmVhbGx5X3NtYWxsX2ludDMyGBUgASgFOgstMjE0NzQ4MzY0OBIwChJyZWFsbHlfc21hbGxfaW50NjQYFiABKAM6FC05MjIzMzcyMDM2ODU0Nzc1ODA4EhgKC3V0Zjhfc3RyaW5nGAYgASgJOgPhiLQSFQoKemVyb19mbG9hdBgHIAEoAjoBMBIUCglvbmVfZmxvYXQYCCABKAI6ATESGAoLc21hbGxfZmxvYXQYCSABKAI6AzEuNRIeChJuZWdhdGl2ZV9vbmVfZmxvYXQYCiABKAI6Ai0xEhwKDm5lZ2F0aXZlX2Zsb2F0GAsgASgCOgQtMS41EhoKC2xhcmdlX2Zsb2F0GAwgASgCOgUyZSswOBIkChRzbWFsbF9uZWdhdGl2ZV9mbG9hdBgNIAEoAjoGLThlLTI4EhcKCmluZl9kb3VibGUYDiABKAE6A2luZhIcCg5uZWdfaW5mX2RvdWJsZRgPIAEoAToELWluZhIXCgpuYW5fZG91YmxlGBAgASgBOgNuYW4SFgoJaW5mX2Zsb2F0GBEgASgCOgNpbmYSGwoNbmVnX2luZl9mbG9hdBgSIAEoAjoELWluZhIWCgluYW5fZmxvYXQYEyABKAI6A25hbhIrCgxjcHBfdHJpZ3JhcGgYFCABKAk6FT8gPyA/PyA/PyA/Pz8gPz8vID8/LRIgChBzdHJpbmdfd2l0aF96ZXJvGBcgASgJOgZoZWwAbG8SIgoPYnl0ZXNfd2l0aF96ZXJvGBggASgMOgl3b3JcMDAwbGQSKAoWc3RyaW5nX3BpZWNlX3dpdGhfemVybxgZIAEoCToEYWIAY0ICCAISIAoOY29yZF93aXRoX3plcm8YGiABKAk6BDEyADNCAggBEiYKEnJlcGxhY2VtZW50X3N0cmluZxgbIAEoCToKJHt1bmtub3dufSJJChFTcGFyc2VFbnVtTWVzc2FnZRI0CgtzcGFyc2VfZW51bRgBIAEoDjIfLnByb3RvMl91bml0dGVzdC5UZXN0U3BhcnNlRW51bSIZCglPbmVTdHJpbmcSDAoEZGF0YRgBIAEoCSIaCgpNb3JlU3RyaW5nEgwKBGRhdGEYASADKAkiGAoIT25lQnl0ZXMSDAoEZGF0YRgBIAEoDCIZCglNb3JlQnl0ZXMSDAoEZGF0YRgBIAMoDCLrAwoSTWFueU9wdGlvbmFsU3RyaW5nEgwKBHN0cjEYASABKAkSDAoEc3RyMhgCIAEoCRIMCgRzdHIzGAMgASgJEgwKBHN0cjQYBCABKAkSDAoEc3RyNRgFIAEoCRIMCgRzdHI2GAYgASgJEgwKBHN0cjcYByABKAkSDAoEc3RyOBgIIAEoCRIMCgRzdHI5GAkgASgJEg0KBXN0cjEwGAogASgJEg0KBXN0cjExGAsgASgJEg0KBXN0cjEyGAwgASgJEg0KBXN0cjEzGA0gASgJEg0KBXN0cjE0GA4gASgJEg0KBXN0cjE1GA8gASgJEg0KBXN0cjE2GBAgASgJEg0KBXN0cjE3GBEgASgJEg0KBXN0cjE4GBIgASgJEg0KBXN0cjE5GBMgASgJEg0KBXN0cjIwGBQgASgJEg0KBXN0cjIxGBUgASgJEg0KBXN0cjIyGBYgASgJEg0KBXN0cjIzGBcgASgJEg0KBXN0cjI0GBggASgJEg0KBXN0cjI1GBkgASgJEg0KBXN0cjI2GBogASgJEg0KBXN0cjI3GBsgASgJEg0KBXN0cjI4GBwgASgJEg0KBXN0cjI5GB0gASgJEg0KBXN0cjMwGB4gASgJEg0KBXN0cjMxGB8gASgJEg0KBXN0cjMyGCAgASgJIhwKDEludDMyTWVzc2FnZRIMCgRkYXRhGAEgASgFIh0KDVVpbnQzMk1lc3NhZ2USDAoEZGF0YRgBIAEoDSIcCgxJbnQ2NE1lc3NhZ2USDAoEZGF0YRgBIAEoAyIdCg1VaW50NjRNZXNzYWdlEgwKBGRhdGEYASABKAQiGwoLQm9vbE1lc3NhZ2USDAoEZGF0YRgBIAEoCCLTAQoJVGVzdE9uZW9mEhEKB2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIgASgJSAASNAoLZm9vX21lc3NhZ2UYAyABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzSAASPgoIZm9vZ3JvdXAYBCABKAsyIy5wcm90bzJfdW5pdHRlc3QuVGVzdE9uZW9mLkZvb0dyb3VwQgWqAQIoAkgAGiAKCEZvb0dyb3VwEgkKAWEYBSABKAUSCQoBYhgGIAEoCUIFCgNmb28i6gEKHFRlc3RPbmVvZkJhY2t3YXJkc0NvbXBhdGlibGUSDwoHZm9vX2ludBgBIAEoBRISCgpmb29fc3RyaW5nGAIgASgJEjIKC2Zvb19tZXNzYWdlGAMgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxJPCghmb29ncm91cBgEIAEoCzI2LnByb3RvMl91bml0dGVzdC5UZXN0T25lb2ZCYWNrd2FyZHNDb21wYXRpYmxlLkZvb0dyb3VwQgWqAQIoAhogCghGb29Hcm91cBIJCgFhGAUgASgFEgkKAWIYBiABKAkiqggKClRlc3RPbmVvZjISEQoHZm9vX2ludBgBIAEoBUgAEhQKCmZvb19zdHJpbmcYAiABKAlIABIWCghmb29fY29yZBgDIAEoCUICCAFIABIeChBmb29fc3RyaW5nX3BpZWNlGAQgASgJQgIIAkgAEhMKCWZvb19ieXRlcxgFIAEoDEgAEjoKCGZvb19lbnVtGAYgASgOMiYucHJvdG8yX3VuaXR0ZXN0LlRlc3RPbmVvZjIuTmVzdGVkRW51bUgAEkAKC2Zvb19tZXNzYWdlGAcgASgLMikucHJvdG8yX3VuaXR0ZXN0LlRlc3RPbmVvZjIuTmVzdGVkTWVzc2FnZUgAEj8KCGZvb2dyb3VwGAggASgLMiQucHJvdG8yX3VuaXR0ZXN0LlRlc3RPbmVvZjIuRm9vR3JvdXBCBaoBAigCSAASSQoQZm9vX2xhenlfbWVzc2FnZRgLIAEoCzIpLnByb3RvMl91bml0dGVzdC5UZXN0T25lb2YyLk5lc3RlZE1lc3NhZ2VCAigBSAASHAoOZm9vX2J5dGVzX2NvcmQYHiABKAxCAggBSAASFAoHYmFyX2ludBgMIAEoBToBNUgBEhwKCmJhcl9zdHJpbmcYDSABKAk6BlNUUklOR0gBEhwKCGJhcl9jb3JkGA4gASgJOgRDT1JEQgIIAUgBEiYKEGJhcl9zdHJpbmdfcGllY2UYDyABKAk6BlNQSUVDRUICCAJIARIaCgliYXJfYnl0ZXMYECABKAw6BUJZVEVTSAESPwoIYmFyX2VudW0YESABKA4yJi5wcm90bzJfdW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRFbnVtOgNCQVJIARIpCh1iYXJfc3RyaW5nX3dpdGhfZW1wdHlfZGVmYXVsdBgUIAEoCToASAESKwobYmFyX2NvcmRfd2l0aF9lbXB0eV9kZWZhdWx0GBUgASgJOgBCAggBSAESMwojYmFyX3N0cmluZ19waWVjZV93aXRoX2VtcHR5X2RlZmF1bHQYFiABKAk6AEICCAJIARIoChxiYXJfYnl0ZXNfd2l0aF9lbXB0eV9kZWZhdWx0GBcgASgMOgBIARIPCgdiYXpfaW50GBIgASgFEhcKCmJhel9zdHJpbmcYEyABKAk6A0JBWhogCghGb29Hcm91cBIJCgFhGAkgASgFEgkKAWIYCiABKAkabQoNTmVzdGVkTWVzc2FnZRIPCgdtb29faW50GAEgASgDEhEKCWNvcmdlX2ludBgCIAMoBRI4CgVjaGlsZBgDIAEoCzIpLnByb3RvMl91bml0dGVzdC5UZXN0T25lb2YyLk5lc3RlZE1lc3NhZ2UiJwoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQA0IFCgNmb29CBQoDYmFyIo8CChFUZXN0UmVxdWlyZWRPbmVvZhIRCgdmb29faW50GAEgASgFSAASFAoKZm9vX3N0cmluZxgCIAEoCUgAEkcKC2Zvb19tZXNzYWdlGAMgASgLMjAucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZE9uZW9mLk5lc3RlZE1lc3NhZ2VIABJQChBmb29fbGF6eV9tZXNzYWdlGAQgASgLMjAucHJvdG8yX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZE9uZW9mLk5lc3RlZE1lc3NhZ2VCAigBSAAaLwoNTmVzdGVkTWVzc2FnZRIeCg9yZXF1aXJlZF9kb3VibGUYASABKAFCBaoBAggDQgUKA2ZvbyLSAwoPVGVzdFBhY2tlZFR5cGVzEhsKDHBhY2tlZF9pbnQzMhhaIAMoBUIFqgECGAESGwoMcGFja2VkX2ludDY0GFsgAygDQgWqAQIYARIcCg1wYWNrZWRfdWludDMyGFwgAygNQgWqAQIYARIcCg1wYWNrZWRfdWludDY0GF0gAygEQgWqAQIYARIcCg1wYWNrZWRfc2ludDMyGF4gAygRQgWqAQIYARIcCg1wYWNrZWRfc2ludDY0GF8gAygSQgWqAQIYARIdCg5wYWNrZWRfZml4ZWQzMhhgIAMoB0IFqgECGAESHQoOcGFja2VkX2ZpeGVkNjQYYSADKAZCBaoBAhgBEh4KD3BhY2tlZF9zZml4ZWQzMhhiIAMoD0IFqgECGAESHgoPcGFja2VkX3NmaXhlZDY0GGMgAygQQgWqAQIYARIbCgxwYWNrZWRfZmxvYXQYZCADKAJCBaoBAhgBEhwKDXBhY2tlZF9kb3VibGUYZSADKAFCBaoBAhgBEhoKC3BhY2tlZF9ib29sGGYgAygIQgWqAQIYARI4CgtwYWNrZWRfZW51bRhnIAMoDjIcLnByb3RvMl91bml0dGVzdC5Gb3JlaWduRW51bUIFqgECGAEijgMKEVRlc3RVbnBhY2tlZFR5cGVzEhYKDnVucGFja2VkX2ludDMyGFogAygFEhYKDnVucGFja2VkX2ludDY0GFsgAygDEhcKD3VucGFja2VkX3VpbnQzMhhcIAMoDRIXCg91bnBhY2tlZF91aW50NjQYXSADKAQSFwoPdW5wYWNrZWRfc2ludDMyGF4gAygREhcKD3VucGFja2VkX3NpbnQ2NBhfIAMoEhIYChB1bnBhY2tlZF9maXhlZDMyGGAgAygHEhgKEHVucGFja2VkX2ZpeGVkNjQYYSADKAYSGQoRdW5wYWNrZWRfc2ZpeGVkMzIYYiADKA8SGQoRdW5wYWNrZWRfc2ZpeGVkNjQYYyADKBASFgoOdW5wYWNrZWRfZmxvYXQYZCADKAISFwoPdW5wYWNrZWRfZG91YmxlGGUgAygBEhUKDXVucGFja2VkX2Jvb2wYZiADKAgSMwoNdW5wYWNrZWRfZW51bRhnIAMoDjIcLnByb3RvMl91bml0dGVzdC5Gb3JlaWduRW51bSIgChRUZXN0UGFja2VkRXh0ZW5zaW9ucyoICAEQgICAgAIiIgoWVGVzdFVucGFja2VkRXh0ZW5zaW9ucyoICAEQgICAgAIilAQKFVRlc3REeW5hbWljRXh0ZW5zaW9ucxIZChBzY2FsYXJfZXh0ZW5zaW9uGNAPIAEoBxI1Cg5lbnVtX2V4dGVuc2lvbhjRDyABKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW0SVwoWZHluYW1pY19lbnVtX2V4dGVuc2lvbhjSDyABKA4yNi5wcm90bzJfdW5pdHRlc3QuVGVzdER5bmFtaWNFeHRlbnNpb25zLkR5bmFtaWNFbnVtVHlwZRI7ChFtZXNzYWdlX2V4dGVuc2lvbhjTDyABKAsyHy5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2USXQoZZHluYW1pY19tZXNzYWdlX2V4dGVuc2lvbhjUDyABKAsyOS5wcm90bzJfdW5pdHRlc3QuVGVzdER5bmFtaWNFeHRlbnNpb25zLkR5bmFtaWNNZXNzYWdlVHlwZRIbChJyZXBlYXRlZF9leHRlbnNpb24Y1Q8gAygJEiAKEHBhY2tlZF9leHRlbnNpb24Y1g8gAygRQgWqAQIYARosChJEeW5hbWljTWVzc2FnZVR5cGUSFgoNZHluYW1pY19maWVsZBi0ECABKAUiRwoPRHluYW1pY0VudW1UeXBlEhAKC0RZTkFNSUNfRk9PEJgREhAKC0RZTkFNSUNfQkFSEJkREhAKC0RZTkFNSUNfQkFaEJoRInwKElRlc3RSZXBlYXRlZFN0cmluZxIYChByZXBlYXRlZF9zdHJpbmcxGAEgAygJEhgKEHJlcGVhdGVkX3N0cmluZzIYAiADKAkSGAoQcmVwZWF0ZWRfYnl0ZXMxMRgLIAMoDBIYChByZXBlYXRlZF9ieXRlczEyGAwgAygMIsABCiNUZXN0UmVwZWF0ZWRTY2FsYXJEaWZmZXJlbnRUYWdTaXplcxIYChByZXBlYXRlZF9maXhlZDMyGAwgAygHEhYKDnJlcGVhdGVkX2ludDMyGA0gAygFEhkKEHJlcGVhdGVkX2ZpeGVkNjQY/g8gAygGEhcKDnJlcGVhdGVkX2ludDY0GP8PIAMoAxIYCg5yZXBlYXRlZF9mbG9hdBj+/w8gAygCEhkKD3JlcGVhdGVkX3VpbnQ2NBj//w8gAygEIowKChBUZXN0UGFyc2luZ01lcmdlEkAKEnJlcXVpcmVkX2FsbF90eXBlcxgBIAEoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXNCBaoBAggDEjkKEm9wdGlvbmFsX2FsbF90eXBlcxgCIAEoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMSOQoScmVwZWF0ZWRfYWxsX3R5cGVzGAMgAygLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxJNCg1vcHRpb25hbGdyb3VwGAogASgLMi8ucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UuT3B0aW9uYWxHcm91cEIFqgECKAISTQoNcmVwZWF0ZWRncm91cBgUIAMoCzIvLnByb3RvMl91bml0dGVzdC5UZXN0UGFyc2luZ01lcmdlLlJlcGVhdGVkR3JvdXBCBaoBAigCGqYEChdSZXBlYXRlZEZpZWxkc0dlbmVyYXRvchItCgZmaWVsZDEYASADKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEi0KBmZpZWxkMhgCIAMoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMSLQoGZmllbGQzGAMgAygLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxJXCgZncm91cDEYCiADKAsyQC5wcm90bzJfdW5pdHRlc3QuVGVzdFBhcnNpbmdNZXJnZS5SZXBlYXRlZEZpZWxkc0dlbmVyYXRvci5Hcm91cDFCBaoBAigCElcKBmdyb3VwMhgUIAMoCzJALnByb3RvMl91bml0dGVzdC5UZXN0UGFyc2luZ01lcmdlLlJlcGVhdGVkRmllbGRzR2VuZXJhdG9yLkdyb3VwMkIFqgECKAISLAoEZXh0MRjoByADKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEiwKBGV4dDIY6QcgAygLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxo3CgZHcm91cDESLQoGZmllbGQxGAsgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxo3CgZHcm91cDISLQoGZmllbGQxGBUgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxpQCg1PcHRpb25hbEdyb3VwEj8KGG9wdGlvbmFsX2dyb3VwX2FsbF90eXBlcxgLIAEoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMaUAoNUmVwZWF0ZWRHcm91cBI/ChhyZXBlYXRlZF9ncm91cF9hbGxfdHlwZXMYFSABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzKgkI6AcQgICAgAIyZAoMb3B0aW9uYWxfZXh0EiEucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6AcgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc1ILb3B0aW9uYWxFeHQyZAoMcmVwZWF0ZWRfZXh0EiEucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6QcgAygLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc1ILcmVwZWF0ZWRFeHQiUAoSVGVzdE1lcmdlRXhjZXB0aW9uEjoKDmFsbF9leHRlbnNpb25zGAEgASgLMiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zIkQKG1Rlc3RDb21tZW50SW5qZWN0aW9uTWVzc2FnZRIlCgFhGAEgASgJOhoqLyA8LSBOZWl0aGVyIHNob3VsZCB0aGlzLiJZCg9UZXN0TWVzc2FnZVNpemUSCgoCbTEYASABKAgSCgoCbTIYAiABKAMSCgoCbTMYAyABKAgSCgoCbTQYBCABKAkSCgoCbTUYBSABKAUSCgoCbTYYBiABKAMiswIKD09wZW5FbnVtTWVzc2FnZRI7CghvcHRfb3BlbhgBIAEoDjIpLnByb3RvMl91bml0dGVzdC5PcGVuRW51bU1lc3NhZ2UuVGVzdEVudW0SMAoKb3B0X2Nsb3NlZBgCIAEoDjIcLnByb3RvMl91bml0dGVzdC5Gb3JlaWduRW51bRJACg1yZXBlYXRlZF9vcGVuGAMgAygOMikucHJvdG8yX3VuaXR0ZXN0Lk9wZW5FbnVtTWVzc2FnZS5UZXN0RW51bRI1Cg9yZXBlYXRlZF9jbG9zZWQYBCADKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW0iOAoIVGVzdEVudW0SCwoHVU5LTk9XThAAEgcKA0ZPTxABEgcKA0JBUhACEgcKA0JBWhADGgQ6AhABIpsBCh5UZXN0RWFnZXJseVZlcmlmaWVkTGF6eU1lc3NhZ2USVQoMbGF6eV9tZXNzYWdlGAEgASgLMjsucHJvdG8yX3VuaXR0ZXN0LlRlc3RFYWdlcmx5VmVyaWZpZWRMYXp5TWVzc2FnZS5MYXp5TWVzc2FnZUICKAEaIgoLTGF6eU1lc3NhZ2USEwoLYnl0ZXNfZmllbGQYASABKAwiDAoKRm9vUmVxdWVzdCINCgtGb29SZXNwb25zZSISChBGb29DbGllbnRNZXNzYWdlIhIKEEZvb1NlcnZlck1lc3NhZ2UiDAoKQmFyUmVxdWVzdCINCgtCYXJSZXNwb25zZSKmAQoMVGVzdEpzb25OYW1lEhMKC2ZpZWxkX25hbWUxGAEgASgFEhIKCmZpZWxkTmFtZTIYAiABKAUSEgoKRmllbGROYW1lMxgDIAEoBRIUCgxfZmllbGRfbmFtZTQYBCABKAUSEwoLRklFTERfTkFNRTUYBSABKAUSGgoLZmllbGRfbmFtZTYYBiABKAVSBUB0eXBlEhIKCmZpZWxkbmFtZTcYByABKAUi4gcKFFRlc3RIdWdlRmllbGROdW1iZXJzEhoKDm9wdGlvbmFsX2ludDMyGPD4//8BIAEoBRIUCghmaXhlZF8zMhjx+P//ASABKAUSGgoOcmVwZWF0ZWRfaW50MzIY8vj//wEgAygFEh8KDHBhY2tlZF9pbnQzMhjz+P//ASADKAVCBaoBAhgBEjcKDW9wdGlvbmFsX2VudW0Y9Pj//wEgASgOMhwucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25FbnVtEhsKD29wdGlvbmFsX3N0cmluZxj1+P//ASABKAkSGgoOb3B0aW9uYWxfYnl0ZXMY9vj//wEgASgMEj0KEG9wdGlvbmFsX21lc3NhZ2UY9/j//wEgASgLMh8ucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlElUKDW9wdGlvbmFsZ3JvdXAY+Pj//wEgASgLMjMucHJvdG8yX3VuaXR0ZXN0LlRlc3RIdWdlRmllbGROdW1iZXJzLk9wdGlvbmFsR3JvdXBCBaoBAigCElkKEXN0cmluZ19zdHJpbmdfbWFwGPr4//8BIAMoCzI6LnByb3RvMl91bml0dGVzdC5UZXN0SHVnZUZpZWxkTnVtYmVycy5TdHJpbmdTdHJpbmdNYXBFbnRyeRIaCgxvbmVvZl91aW50MzIY+/j//wEgASgNSAASQQoUb25lb2ZfdGVzdF9hbGxfdHlwZXMY/Pj//wEgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc0gAEhoKDG9uZW9mX3N0cmluZxj9+P//ASABKAlIABIZCgtvbmVvZl9ieXRlcxj++P//ASABKAxIABIZCg1vcHRpb25hbF9ib29sGP/4//8BIAEoCBIaCg5vcHRpb25hbF9pbnQ2NBiA+f//ASABKAMSGgoOb3B0aW9uYWxfZmxvYXQYgfn//wEgASgCEhsKD29wdGlvbmFsX2RvdWJsZRiC+f//ASABKAESJwoUb3B0aW9uYWxfdXRmOF9zdHJpbmcYg/n//wEgASgJQgWqAQIgAhIiCg1vcHRpb25hbF9jb3JkGIT5//8BIAEoCUIHCAGqAQIgAhIqChVvcHRpb25hbF9zdHJpbmdfcGllY2UYhfn//wEgASgJQgcIAqoBAiACGiQKDU9wdGlvbmFsR3JvdXASEwoHZ3JvdXBfYRj5+P//ASABKAUaNgoUU3RyaW5nU3RyaW5nTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASoMCOCq//8BEPD4//8BQg0KC29uZW9mX2ZpZWxkIrEBChhUZXN0RXh0ZW5zaW9uSW5zaWRlVGFibGUSDgoGZmllbGQxGAEgASgFEg4KBmZpZWxkMhgCIAEoBRIOCgZmaWVsZDMYAyABKAUSDgoGZmllbGQ0GAQgASgFEg4KBmZpZWxkNhgGIAEoBRIOCgZmaWVsZDcYByABKAUSDgoGZmllbGQ4GAggASgFEg4KBmZpZWxkORgJIAEoBRIPCgdmaWVsZDEwGAogASgFKgQIBRAGIqUECh1UZXN0TmVzdGVkR3JvdXBFeHRlbnNpb25PdXRlchJmChNsYXllcjFvcHRpb25hbGdyb3VwGAEgASgLMkIucHJvdG8yX3VuaXR0ZXN0LlRlc3ROZXN0ZWRHcm91cEV4dGVuc2lvbk91dGVyLkxheWVyMU9wdGlvbmFsR3JvdXBCBaoBAigCGpsDChNMYXllcjFPcHRpb25hbEdyb3VwEnoKE2xheWVyMnJlcGVhdGVkZ3JvdXAYAiADKAsyVi5wcm90bzJfdW5pdHRlc3QuVGVzdE5lc3RlZEdyb3VwRXh0ZW5zaW9uT3V0ZXIuTGF5ZXIxT3B0aW9uYWxHcm91cC5MYXllcjJSZXBlYXRlZEdyb3VwQgWqAQIoAhKYAQoibGF5ZXIyYW5vdGhlcm9wdGlvbmFscmVwZWF0ZWRncm91cBgEIAMoCzJlLnByb3RvMl91bml0dGVzdC5UZXN0TmVzdGVkR3JvdXBFeHRlbnNpb25PdXRlci5MYXllcjFPcHRpb25hbEdyb3VwLkxheWVyMkFub3RoZXJPcHRpb25hbFJlcGVhdGVkR3JvdXBCBaoBAigCGjIKE0xheWVyMlJlcGVhdGVkR3JvdXASFQoNYW5vdGhlcl9maWVsZBgGIAEoCSoECAMQBBo5CiJMYXllcjJBbm90aGVyT3B0aW9uYWxSZXBlYXRlZEdyb3VwEhMKC2J1dF93aHlfdGhvGAUgASgJIjwKJlRlc3ROZXN0ZWRHcm91cEV4dGVuc2lvbklubmVyRXh0ZW5zaW9uEhIKCmlubmVyX25hbWUYASABKAki8wMKG1Rlc3RFeHRlbnNpb25SYW5nZVNlcmlhbGl6ZRIPCgdmb29fb25lGAEgASgFEg8KB2Zvb190d28YBiABKAUSEQoJZm9vX3RocmVlGAcgASgFEhAKCGZvb19mb3VyGA0gASgFKgQIAhADKgQIAxAFKgQICRALKgQIDxAQKgQIERASKgQIExAUMkUKB2Jhcl9vbmUSLC5wcm90bzJfdW5pdHRlc3QuVGVzdEV4dGVuc2lvblJhbmdlU2VyaWFsaXplGAIgASgFUgZiYXJPbmUyRQoHYmFyX3R3bxIsLnByb3RvMl91bml0dGVzdC5UZXN0RXh0ZW5zaW9uUmFuZ2VTZXJpYWxpemUYBCABKAVSBmJhclR3bzJJCgliYXJfdGhyZWUSLC5wcm90bzJfdW5pdHRlc3QuVGVzdEV4dGVuc2lvblJhbmdlU2VyaWFsaXplGAogASgFUghiYXJUaHJlZTJHCghiYXJfZm91chIsLnByb3RvMl91bml0dGVzdC5UZXN0RXh0ZW5zaW9uUmFuZ2VTZXJpYWxpemUYDyABKAVSB2JhckZvdXIyRwoIYmFyX2ZpdmUSLC5wcm90bzJfdW5pdHRlc3QuVGVzdEV4dGVuc2lvblJhbmdlU2VyaWFsaXplGBMgASgFUgdiYXJGaXZlIoEBChVUZXN0VmVyaWZ5SW50MzJTaW1wbGUSGAoQb3B0aW9uYWxfaW50MzJfMRgBIAEoBRIYChBvcHRpb25hbF9pbnQzMl8yGAIgASgFEhkKEW9wdGlvbmFsX2ludDMyXzYzGD8gASgFEhkKEW9wdGlvbmFsX2ludDMyXzY0GEAgASgFIvEBCg9UZXN0VmVyaWZ5SW50MzISGAoQb3B0aW9uYWxfaW50MzJfMRgBIAEoBRIYChBvcHRpb25hbF9pbnQzMl8yGAIgASgFEhkKEW9wdGlvbmFsX2ludDMyXzYzGD8gASgFEhkKEW9wdGlvbmFsX2ludDMyXzY0GEAgASgFEjkKEm9wdGlvbmFsX2FsbF90eXBlcxgJIAEoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMSOQoScmVwZWF0ZWRfYWxsX3R5cGVzGAogAygLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcyLGAgoVVGVzdFZlcmlmeU1vc3RseUludDMyEhkKEW9wdGlvbmFsX2ludDY0XzMwGB4gASgDEhgKEG9wdGlvbmFsX2ludDMyXzEYASABKAUSGAoQb3B0aW9uYWxfaW50MzJfMhgCIAEoBRIYChBvcHRpb25hbF9pbnQzMl8zGAMgASgFEhgKEG9wdGlvbmFsX2ludDMyXzQYBCABKAUSGQoRb3B0aW9uYWxfaW50MzJfNjMYPyABKAUSGQoRb3B0aW9uYWxfaW50MzJfNjQYQCABKAUSOQoSb3B0aW9uYWxfYWxsX3R5cGVzGAkgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxI5ChJyZXBlYXRlZF9hbGxfdHlwZXMYCiADKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzIvECCiNUZXN0VmVyaWZ5TW9zdGx5SW50MzJCaWdGaWVsZE51bWJlchIZChFvcHRpb25hbF9pbnQ2NF8zMBgeIAEoAxIbChJvcHRpb25hbF9pbnQzMl8zMDAYrAIgASgFEhgKEG9wdGlvbmFsX2ludDMyXzEYASABKAUSGAoQb3B0aW9uYWxfaW50MzJfMhgCIAEoBRIYChBvcHRpb25hbF9pbnQzMl8zGAMgASgFEhgKEG9wdGlvbmFsX2ludDMyXzQYBCABKAUSGQoRb3B0aW9uYWxfaW50MzJfNjMYPyABKAUSGQoRb3B0aW9uYWxfaW50MzJfNjQYQCABKAUSOQoSb3B0aW9uYWxfYWxsX3R5cGVzGAkgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxI5ChJyZXBlYXRlZF9hbGxfdHlwZXMYCiADKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzIoYBChZUZXN0VmVyaWZ5VWludDMyU2ltcGxlEhkKEW9wdGlvbmFsX3VpbnQzMl8xGAEgASgNEhkKEW9wdGlvbmFsX3VpbnQzMl8yGAIgASgNEhoKEm9wdGlvbmFsX3VpbnQzMl82Mxg/IAEoDRIaChJvcHRpb25hbF91aW50MzJfNjQYQCABKA0i9gEKEFRlc3RWZXJpZnlVaW50MzISGQoRb3B0aW9uYWxfdWludDMyXzEYASABKA0SGQoRb3B0aW9uYWxfdWludDMyXzIYAiABKA0SGgoSb3B0aW9uYWxfdWludDMyXzYzGD8gASgNEhoKEm9wdGlvbmFsX3VpbnQzMl82NBhAIAEoDRI5ChJvcHRpb25hbF9hbGxfdHlwZXMYCSABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEjkKEnJlcGVhdGVkX2FsbF90eXBlcxgKIAMoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMi9gEKE1Rlc3RWZXJpZnlPbmVVaW50MzISGQoRb3B0aW9uYWxfdWludDMyXzEYASABKA0SGAoQb3B0aW9uYWxfaW50MzJfMhgCIAEoBRIZChFvcHRpb25hbF9pbnQzMl82Mxg/IAEoBRIZChFvcHRpb25hbF9pbnQzMl82NBhAIAEoBRI5ChJvcHRpb25hbF9hbGxfdHlwZXMYCSABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEjkKEnJlcGVhdGVkX2FsbF90eXBlcxgKIAMoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMinQIKIFRlc3RWZXJpZnlPbmVJbnQzMkJpZ0ZpZWxkTnVtYmVyEhkKEW9wdGlvbmFsX2ludDMyXzY1GEEgASgFEhgKEG9wdGlvbmFsX2ludDY0XzEYASABKAMSGAoQb3B0aW9uYWxfaW50NjRfMhgCIAEoAxIZChFvcHRpb25hbF9pbnQ2NF82Mxg/IAEoAxIZChFvcHRpb25hbF9pbnQ2NF82NBhAIAEoAxI5ChJvcHRpb25hbF9hbGxfdHlwZXMYCSABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEjkKEnJlcGVhdGVkX2FsbF90eXBlcxgKIAMoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMiuAIKHVRlc3RWZXJpZnlJbnQzMkJpZ0ZpZWxkTnVtYmVyEhwKE29wdGlvbmFsX2ludDMyXzEwMDAY6AcgASgFEhkKEW9wdGlvbmFsX2ludDMyXzY1GEEgASgFEhgKEG9wdGlvbmFsX2ludDMyXzEYASABKAUSGAoQb3B0aW9uYWxfaW50MzJfMhgCIAEoBRIZChFvcHRpb25hbF9pbnQzMl82Mxg/IAEoBRIZChFvcHRpb25hbF9pbnQzMl82NBhAIAEoBRI5ChJvcHRpb25hbF9hbGxfdHlwZXMYCSABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEjkKEnJlcGVhdGVkX2FsbF90eXBlcxgKIAMoCzIdLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMivwIKHlRlc3RWZXJpZnlVaW50MzJCaWdGaWVsZE51bWJlchIdChRvcHRpb25hbF91aW50MzJfMTAwMBjoByABKA0SGgoSb3B0aW9uYWxfdWludDMyXzY1GEEgASgNEhkKEW9wdGlvbmFsX3VpbnQzMl8xGAEgASgNEhkKEW9wdGlvbmFsX3VpbnQzMl8yGAIgASgNEhoKEm9wdGlvbmFsX3VpbnQzMl82Mxg/IAEoDRIaChJvcHRpb25hbF91aW50MzJfNjQYQCABKA0SOQoSb3B0aW9uYWxfYWxsX3R5cGVzGAkgASgLMh0ucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxI5ChJyZXBlYXRlZF9hbGxfdHlwZXMYCiADKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzIoIECh5UZXN0VmVyaWZ5QmlnRmllbGROdW1iZXJVaW50MzISTwoPb3B0aW9uYWxfbmVzdGVkGAEgASgLMjYucHJvdG8yX3VuaXR0ZXN0LlRlc3RWZXJpZnlCaWdGaWVsZE51bWJlclVpbnQzMi5OZXN0ZWQajgMKBk5lc3RlZBIdChRvcHRpb25hbF91aW50MzJfNTAwMBiIJyABKA0SHQoUb3B0aW9uYWxfdWludDMyXzEwMDAY6AcgASgNEhoKEm9wdGlvbmFsX3VpbnQzMl82NhhCIAEoDRIaChJvcHRpb25hbF91aW50MzJfNjUYQSABKA0SGQoRb3B0aW9uYWxfdWludDMyXzEYASABKA0SGQoRb3B0aW9uYWxfdWludDMyXzIYAiABKA0SGgoSb3B0aW9uYWxfdWludDMyXzYzGD8gASgNEhoKEm9wdGlvbmFsX3VpbnQzMl82NBhAIAEoDRJPCg9vcHRpb25hbF9uZXN0ZWQYCSABKAsyNi5wcm90bzJfdW5pdHRlc3QuVGVzdFZlcmlmeUJpZ0ZpZWxkTnVtYmVyVWludDMyLk5lc3RlZBJPCg9yZXBlYXRlZF9uZXN0ZWQYCiADKAsyNi5wcm90bzJfdW5pdHRlc3QuVGVzdFZlcmlmeUJpZ0ZpZWxkTnVtYmVyVWludDMyLk5lc3RlZCLcIgoPRW51bVBhcnNlVGVzdGVyElEKHW9wdGlvbmFsX3NlcV9zbWFsbF8wX2xvd2ZpZWxkGAEgASgOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDASUgodb3B0aW9uYWxfc2VxX3NtYWxsXzBfbWlkZmllbGQY6QcgASgOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDASUgocb3B0aW9uYWxfc2VxX3NtYWxsXzBfaGlmaWVsZBjBhD0gASgOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDASUQodcmVwZWF0ZWRfc2VxX3NtYWxsXzBfbG93ZmllbGQYAiADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMBJSCh1yZXBlYXRlZF9zZXFfc21hbGxfMF9taWRmaWVsZBjqByADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMBJSChxyZXBlYXRlZF9zZXFfc21hbGxfMF9oaWZpZWxkGMKEPSADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMBJWChtwYWNrZWRfc2VxX3NtYWxsXzBfbG93ZmllbGQYAyADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMEIFqgECGAESVwobcGFja2VkX3NlcV9zbWFsbF8wX21pZGZpZWxkGOsHIAMoDjIqLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuU2VxU21hbGwwQgWqAQIYARJXChpwYWNrZWRfc2VxX3NtYWxsXzBfaGlmaWVsZBjDhD0gAygOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDBCBaoBAhgBElEKHW9wdGlvbmFsX3NlcV9zbWFsbF8xX2xvd2ZpZWxkGAQgASgOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDESUgodb3B0aW9uYWxfc2VxX3NtYWxsXzFfbWlkZmllbGQY7AcgASgOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDESUgocb3B0aW9uYWxfc2VxX3NtYWxsXzFfaGlmaWVsZBjEhD0gASgOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDESUQodcmVwZWF0ZWRfc2VxX3NtYWxsXzFfbG93ZmllbGQYBSADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMRJSCh1yZXBlYXRlZF9zZXFfc21hbGxfMV9taWRmaWVsZBjtByADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMRJSChxyZXBlYXRlZF9zZXFfc21hbGxfMV9oaWZpZWxkGMWEPSADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMRJWChtwYWNrZWRfc2VxX3NtYWxsXzFfbG93ZmllbGQYBiADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcVNtYWxsMUIFqgECGAESVwobcGFja2VkX3NlcV9zbWFsbF8xX21pZGZpZWxkGO4HIAMoDjIqLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuU2VxU21hbGwxQgWqAQIYARJXChpwYWNrZWRfc2VxX3NtYWxsXzFfaGlmaWVsZBjGhD0gAygOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFTbWFsbDFCBaoBAhgBEk4KG29wdGlvbmFsX3NlcV9sYXJnZV9sb3dmaWVsZBgHIAEoDjIpLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuU2VxTGFyZ2USTwobb3B0aW9uYWxfc2VxX2xhcmdlX21pZGZpZWxkGO8HIAEoDjIpLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuU2VxTGFyZ2USTwoab3B0aW9uYWxfc2VxX2xhcmdlX2hpZmllbGQYx4Q9IAEoDjIpLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuU2VxTGFyZ2USTgobcmVwZWF0ZWRfc2VxX2xhcmdlX2xvd2ZpZWxkGAggAygOMikucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFMYXJnZRJPChtyZXBlYXRlZF9zZXFfbGFyZ2VfbWlkZmllbGQY8AcgAygOMikucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFMYXJnZRJPChpyZXBlYXRlZF9zZXFfbGFyZ2VfaGlmaWVsZBjIhD0gAygOMikucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFMYXJnZRJTChlwYWNrZWRfc2VxX2xhcmdlX2xvd2ZpZWxkGAkgAygOMikucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5TZXFMYXJnZUIFqgECGAESVAoZcGFja2VkX3NlcV9sYXJnZV9taWRmaWVsZBjxByADKA4yKS5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLlNlcUxhcmdlQgWqAQIYARJUChhwYWNrZWRfc2VxX2xhcmdlX2hpZmllbGQYyYQ9IAMoDjIpLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuU2VxTGFyZ2VCBaoBAhgBEk8KG29wdGlvbmFsX2FyYml0cmFyeV9sb3dmaWVsZBgKIAEoDjIqLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuQXJiaXRyYXJ5ElAKG29wdGlvbmFsX2FyYml0cmFyeV9taWRmaWVsZBjyByABKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLkFyYml0cmFyeRJQChpvcHRpb25hbF9hcmJpdHJhcnlfaGlmaWVsZBjKhD0gASgOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5BcmJpdHJhcnkSTwobcmVwZWF0ZWRfYXJiaXRyYXJ5X2xvd2ZpZWxkGAsgAygOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5BcmJpdHJhcnkSUAobcmVwZWF0ZWRfYXJiaXRyYXJ5X21pZGZpZWxkGPMHIAMoDjIqLnByb3RvMl91bml0dGVzdC5FbnVtUGFyc2VUZXN0ZXIuQXJiaXRyYXJ5ElAKGnJlcGVhdGVkX2FyYml0cmFyeV9oaWZpZWxkGMuEPSADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLkFyYml0cmFyeRJUChlwYWNrZWRfYXJiaXRyYXJ5X2xvd2ZpZWxkGAwgAygOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5BcmJpdHJhcnlCBaoBAhgBElUKGXBhY2tlZF9hcmJpdHJhcnlfbWlkZmllbGQY9AcgAygOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5BcmJpdHJhcnlCBaoBAhgBElUKGHBhY2tlZF9hcmJpdHJhcnlfaGlmaWVsZBjMhD0gAygOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5BcmJpdHJhcnlCBaoBAhgBEhMKC290aGVyX2ZpZWxkGGMgASgFIkoKCVNlcVNtYWxsMBIXChNTRVFfU01BTExfMF9ERUZBVUxUEAASEQoNU0VRX1NNQUxMXzBfMRABEhEKDVNFUV9TTUFMTF8wXzIQAiJKCglTZXFTbWFsbDESFwoTU0VRX1NNQUxMXzFfREVGQVVMVBABEhEKDVNFUV9TTUFMTF8xXzIQAhIRCg1TRVFfU01BTExfMV8zEAMihAUKCFNlcUxhcmdlEh4KEVNFUV9MQVJHRV9ERUZBVUxUEP///////////wESDwoLU0VRX0xBUkdFXzAQABIPCgtTRVFfTEFSR0VfMRABEg8KC1NFUV9MQVJHRV8yEAISDwoLU0VRX0xBUkdFXzMQAxIPCgtTRVFfTEFSR0VfNBAEEg8KC1NFUV9MQVJHRV81EAUSDwoLU0VRX0xBUkdFXzYQBhIPCgtTRVFfTEFSR0VfNxAHEg8KC1NFUV9MQVJHRV84EAgSDwoLU0VRX0xBUkdFXzkQCRIQCgxTRVFfTEFSR0VfMTAQChIQCgxTRVFfTEFSR0VfMTEQCxIQCgxTRVFfTEFSR0VfMTIQDBIQCgxTRVFfTEFSR0VfMTMQDRIQCgxTRVFfTEFSR0VfMTQQDhIQCgxTRVFfTEFSR0VfMTUQDxIQCgxTRVFfTEFSR0VfMTYQEBIQCgxTRVFfTEFSR0VfMTcQERIQCgxTRVFfTEFSR0VfMTgQEhIQCgxTRVFfTEFSR0VfMTkQExIQCgxTRVFfTEFSR0VfMjAQFBIQCgxTRVFfTEFSR0VfMjEQFRIQCgxTRVFfTEFSR0VfMjIQFhIQCgxTRVFfTEFSR0VfMjMQFxIQCgxTRVFfTEFSR0VfMjQQGBIQCgxTRVFfTEFSR0VfMjUQGRIQCgxTRVFfTEFSR0VfMjYQGhIQCgxTRVFfTEFSR0VfMjcQGxIQCgxTRVFfTEFSR0VfMjgQHBIQCgxTRVFfTEFSR0VfMjkQHRIQCgxTRVFfTEFSR0VfMzAQHhIQCgxTRVFfTEFSR0VfMzEQHxIQCgxTRVFfTEFSR0VfMzIQIBIQCgxTRVFfTEFSR0VfMzMQISKdAQoJQXJiaXRyYXJ5Eh4KEUFSQklUUkFSWV9ERUZBVUxUEI2++P///////wESGAoLQVJCSVRSQVJZXzEQhf//////////ARIQCgtBUkJJVFJBUllfMhDVARIRCgtBUkJJVFJBUllfMxDdgQ0SGgoNQVJCSVRSQVJZX01JThCAgICA+P////8BEhUKDUFSQklUUkFSWV9NQVgQ/////wcqCgiAiXoQgICAgAIyhAEKFm9wdGlvbmFsX2FyYml0cmFyeV9leHQSIC5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyGICJeiABKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLkFyYml0cmFyeVIUb3B0aW9uYWxBcmJpdHJhcnlFeHQyhAEKFnJlcGVhdGVkX2FyYml0cmFyeV9leHQSIC5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyGIGJeiADKA4yKi5wcm90bzJfdW5pdHRlc3QuRW51bVBhcnNlVGVzdGVyLkFyYml0cmFyeVIUcmVwZWF0ZWRBcmJpdHJhcnlFeHQyhwEKFHBhY2tlZF9hcmJpdHJhcnlfZXh0EiAucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3RlchiCiXogAygOMioucHJvdG8yX3VuaXR0ZXN0LkVudW1QYXJzZVRlc3Rlci5BcmJpdHJhcnlCBaoBAhgBUhJwYWNrZWRBcmJpdHJhcnlFeHQi2gQKD0Jvb2xQYXJzZVRlc3RlchIeChZvcHRpb25hbF9ib29sX2xvd2ZpZWxkGAEgASgIEh8KFm9wdGlvbmFsX2Jvb2xfbWlkZmllbGQY6QcgASgIEh8KFW9wdGlvbmFsX2Jvb2xfaGlmaWVsZBjBhD0gASgIEh4KFnJlcGVhdGVkX2Jvb2xfbG93ZmllbGQYAiADKAgSHwoWcmVwZWF0ZWRfYm9vbF9taWRmaWVsZBjqByADKAgSHwoVcmVwZWF0ZWRfYm9vbF9oaWZpZWxkGMKEPSADKAgSIwoUcGFja2VkX2Jvb2xfbG93ZmllbGQYAyADKAhCBaoBAhgBEiQKFHBhY2tlZF9ib29sX21pZGZpZWxkGOsHIAMoCEIFqgECGAESJAoTcGFja2VkX2Jvb2xfaGlmaWVsZBjDhD0gAygIQgWqAQIYARITCgtvdGhlcl9maWVsZBhjIAEoBSoKCICJehCAgICAAjJOChFvcHRpb25hbF9ib29sX2V4dBIgLnByb3RvMl91bml0dGVzdC5Cb29sUGFyc2VUZXN0ZXIYgIl6IAEoCFIPb3B0aW9uYWxCb29sRXh0Mk4KEXJlcGVhdGVkX2Jvb2xfZXh0EiAucHJvdG8yX3VuaXR0ZXN0LkJvb2xQYXJzZVRlc3RlchiBiXogAygIUg9yZXBlYXRlZEJvb2xFeHQyUQoPcGFja2VkX2Jvb2xfZXh0EiAucHJvdG8yX3VuaXR0ZXN0LkJvb2xQYXJzZVRlc3RlchiCiXogAygIQgWqAQIYAVINcGFja2VkQm9vbEV4dCLtBAoQSW50MzJQYXJzZVRlc3RlchIfChdvcHRpb25hbF9pbnQzMl9sb3dmaWVsZBgBIAEoBRIgChdvcHRpb25hbF9pbnQzMl9taWRmaWVsZBjpByABKAUSIAoWb3B0aW9uYWxfaW50MzJfaGlmaWVsZBjBhD0gASgFEh8KF3JlcGVhdGVkX2ludDMyX2xvd2ZpZWxkGAIgAygFEiAKF3JlcGVhdGVkX2ludDMyX21pZGZpZWxkGOoHIAMoBRIgChZyZXBlYXRlZF9pbnQzMl9oaWZpZWxkGMKEPSADKAUSJAoVcGFja2VkX2ludDMyX2xvd2ZpZWxkGAMgAygFQgWqAQIYARIlChVwYWNrZWRfaW50MzJfbWlkZmllbGQY6wcgAygFQgWqAQIYARIlChRwYWNrZWRfaW50MzJfaGlmaWVsZBjDhD0gAygFQgWqAQIYARITCgtvdGhlcl9maWVsZBhjIAEoBSoKCICJehCAgICAAjJRChJvcHRpb25hbF9pbnQzMl9leHQSIS5wcm90bzJfdW5pdHRlc3QuSW50MzJQYXJzZVRlc3RlchiAiXogASgFUhBvcHRpb25hbEludDMyRXh0MlEKEnJlcGVhdGVkX2ludDMyX2V4dBIhLnByb3RvMl91bml0dGVzdC5JbnQzMlBhcnNlVGVzdGVyGIGJeiADKAVSEHJlcGVhdGVkSW50MzJFeHQyVAoQcGFja2VkX2ludDMyX2V4dBIhLnByb3RvMl91bml0dGVzdC5JbnQzMlBhcnNlVGVzdGVyGIKJeiADKAVCBaoBAhgBUg5wYWNrZWRJbnQzMkV4dCLtBAoQSW50NjRQYXJzZVRlc3RlchIfChdvcHRpb25hbF9pbnQ2NF9sb3dmaWVsZBgBIAEoAxIgChdvcHRpb25hbF9pbnQ2NF9taWRmaWVsZBjpByABKAMSIAoWb3B0aW9uYWxfaW50NjRfaGlmaWVsZBjBhD0gASgDEh8KF3JlcGVhdGVkX2ludDY0X2xvd2ZpZWxkGAIgAygDEiAKF3JlcGVhdGVkX2ludDY0X21pZGZpZWxkGOoHIAMoAxIgChZyZXBlYXRlZF9pbnQ2NF9oaWZpZWxkGMKEPSADKAMSJAoVcGFja2VkX2ludDY0X2xvd2ZpZWxkGAMgAygDQgWqAQIYARIlChVwYWNrZWRfaW50NjRfbWlkZmllbGQY6wcgAygDQgWqAQIYARIlChRwYWNrZWRfaW50NjRfaGlmaWVsZBjDhD0gAygDQgWqAQIYARITCgtvdGhlcl9maWVsZBhjIAEoBSoKCICJehCAgICAAjJRChJvcHRpb25hbF9pbnQ2NF9leHQSIS5wcm90bzJfdW5pdHRlc3QuSW50NjRQYXJzZVRlc3RlchiAiXogASgDUhBvcHRpb25hbEludDY0RXh0MlEKEnJlcGVhdGVkX2ludDY0X2V4dBIhLnByb3RvMl91bml0dGVzdC5JbnQ2NFBhcnNlVGVzdGVyGIGJeiADKANSEHJlcGVhdGVkSW50NjRFeHQyVAoQcGFja2VkX2ludDY0X2V4dBIhLnByb3RvMl91bml0dGVzdC5JbnQ2NFBhcnNlVGVzdGVyGIKJeiADKANCBaoBAhgBUg5wYWNrZWRJbnQ2NEV4dCKKAQofSW5saW5lZFN0cmluZ0lkeFJlZ3Jlc3Npb25Qcm90bxIMCgRzdHIxGAEgASgJEj0KA3N1YhgCIAEoCzIwLnByb3RvMl91bml0dGVzdC5JbmxpbmVkU3RyaW5nSWR4UmVncmVzc2lvblByb3RvEgwKBHN0cjIYAyABKAkSDAoEc3RyMxgEIAEoDCKbAwoRU3RyaW5nUGFyc2VUZXN0ZXISIAoYb3B0aW9uYWxfc3RyaW5nX2xvd2ZpZWxkGAEgASgJEiEKGG9wdGlvbmFsX3N0cmluZ19taWRmaWVsZBjpByABKAkSIQoXb3B0aW9uYWxfc3RyaW5nX2hpZmllbGQYwYQ9IAEoCRIgChhyZXBlYXRlZF9zdHJpbmdfbG93ZmllbGQYAiADKAkSIQoYcmVwZWF0ZWRfc3RyaW5nX21pZGZpZWxkGOoHIAMoCRIhChdyZXBlYXRlZF9zdHJpbmdfaGlmaWVsZBjChD0gAygJKgoIgIl6EICAgIACMlQKE29wdGlvbmFsX3N0cmluZ19leHQSIi5wcm90bzJfdW5pdHRlc3QuU3RyaW5nUGFyc2VUZXN0ZXIYgIl6IAEoCVIRb3B0aW9uYWxTdHJpbmdFeHQyVAoTcmVwZWF0ZWRfc3RyaW5nX2V4dBIiLnByb3RvMl91bml0dGVzdC5TdHJpbmdQYXJzZVRlc3RlchiBiXogAygJUhFyZXBlYXRlZFN0cmluZ0V4dCIzCg1CYWRGaWVsZE5hbWVzEhUKDU9wdGlvbmFsSW50MzIYASABKAUSCwoDZm9yGAIgASgFInUKGlRlc3ROZXN0ZWRNZXNzYWdlUmVkYWN0aW9uEikKIW9wdGlvbmFsX3VucmVkYWN0ZWRfbmVzdGVkX3N0cmluZxgBIAEoCRIsCh9vcHRpb25hbF9yZWRhY3RlZF9uZXN0ZWRfc3RyaW5nGAIgASgJQgOAAQEi0AYKDlJlZGFjdGVkRmllbGRzEiUKGG9wdGlvbmFsX3JlZGFjdGVkX3N0cmluZxgBIAEoCUIDgAEBEiIKGm9wdGlvbmFsX3VucmVkYWN0ZWRfc3RyaW5nGAIgASgJEiUKGHJlcGVhdGVkX3JlZGFjdGVkX3N0cmluZxgDIAMoCUIDgAEBEiIKGnJlcGVhdGVkX3VucmVkYWN0ZWRfc3RyaW5nGAQgAygJElMKGW9wdGlvbmFsX3JlZGFjdGVkX21lc3NhZ2UYBSABKAsyKy5wcm90bzJfdW5pdHRlc3QuVGVzdE5lc3RlZE1lc3NhZ2VSZWRhY3Rpb25CA4ABARJQChtvcHRpb25hbF91bnJlZGFjdGVkX21lc3NhZ2UYBiABKAsyKy5wcm90bzJfdW5pdHRlc3QuVGVzdE5lc3RlZE1lc3NhZ2VSZWRhY3Rpb24SUwoZcmVwZWF0ZWRfcmVkYWN0ZWRfbWVzc2FnZRgHIAMoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0TmVzdGVkTWVzc2FnZVJlZGFjdGlvbkIDgAEBElAKG3JlcGVhdGVkX3VucmVkYWN0ZWRfbWVzc2FnZRgIIAMoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0TmVzdGVkTWVzc2FnZVJlZGFjdGlvbhJYChNtYXBfcmVkYWN0ZWRfc3RyaW5nGAkgAygLMjYucHJvdG8yX3VuaXR0ZXN0LlJlZGFjdGVkRmllbGRzLk1hcFJlZGFjdGVkU3RyaW5nRW50cnlCA4ABARJXChVtYXBfdW5yZWRhY3RlZF9zdHJpbmcYCiADKAsyOC5wcm90bzJfdW5pdHRlc3QuUmVkYWN0ZWRGaWVsZHMuTWFwVW5yZWRhY3RlZFN0cmluZ0VudHJ5EisKHm9wdGlvbmFsX3JlZGFjdGVkX2ZhbHNlX3N0cmluZxgLIAEoCUIDgAEAGjgKFk1hcFJlZGFjdGVkU3RyaW5nRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo6ChhNYXBVbnJlZGFjdGVkU3RyaW5nRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASoECBQQHyIlCgpUZXN0U3RyaW5nEhcKD29wdGlvbmFsX3N0cmluZxgBIAEoCSJbCghUZXN0Q29yZBIfChNvcHRpb25hbF9ieXRlc19jb3JkGAEgASgMQgIIARIuChtvcHRpb25hbF9ieXRlc19jb3JkX2RlZmF1bHQYAiABKAw6BWhlbGxvQgIIASKfAQoYVGVzdFBhY2tlZEVudW1TbWFsbFJhbmdlEkkKBHZhbHMYASADKA4yNC5wcm90bzJfdW5pdHRlc3QuVGVzdFBhY2tlZEVudW1TbWFsbFJhbmdlLk5lc3RlZEVudW1CBaoBAhgBIjgKCk5lc3RlZEVudW0SDwoLVU5TUEVDSUZJRUQQABIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQAyKZBAoRRW51bXNGb3JCZW5jaG1hcmsijAEKBEZsYXQSBgoCQTAQABIGCgJBMRABEgYKAkEyEAISBgoCQTMQAxIGCgJBNBAEEgYKAkE1EAUSBgoCQTYQBhIGCgJBNxAHEgYKAkE4EAgSBgoCQTkQCRIHCgNBMTAQChIHCgNBMTEQCxIHCgNBMTIQDBIHCgNBMTMQDRIHCgNBMTQQDhIHCgNBMTUQDyKTAQoKQWxtb3N0RmxhdBIGCgJCMBAAEgYKAkIxEAESBgoCQjIQAhIGCgJCMxADEgYKAkI1EAUSBgoCQjYQBhIGCgJCNxAHEgYKAkI4EAgSBgoCQjkQCRIHCgNCMTEQCxIHCgNCMTIQDBIHCgNCMTMQDRIHCgNCMTQQDhIHCgNCMTUQDxIHCgNCMTcQERIHCgNCMTkQEyLeAQoGU3BhcnNlEgkKBEM1MzYQmAQSCgoFQzgzODcQw0ESCgoFQzk2NzMQyUsSCwoGQzEwMjg1EK1QEgsKBkMxMzMxOBCGaBILCgZDMTU5NjMQ23wSDAoGQzE2NDM5ELeAARIMCgZDMTgxOTcQlY4BEgwKBkMxOTQzMBDmlwESDAoGQzIwMzYxEImfARIMCgZDMjA3MDYQ4qEBEgwKBkMyMTA1MBC6pAESDAoGQzIxOTA2EJKrARIMCgZDMjcyNjUQgdUBEgwKBkMzMDEwORCd6wESDAoGQzMxNjcwELb3ASKdBwokVGVzdE1lc3NhZ2VXaXRoTWFueVJlcGVhdGVkUHRyRmllbGRzEhkKEXJlcGVhdGVkX3N0cmluZ18xGAEgAygJEhkKEXJlcGVhdGVkX3N0cmluZ18yGAIgAygJEhkKEXJlcGVhdGVkX3N0cmluZ18zGAMgAygJEhkKEXJlcGVhdGVkX3N0cmluZ180GAQgAygJEhkKEXJlcGVhdGVkX3N0cmluZ181GAUgAygJEhkKEXJlcGVhdGVkX3N0cmluZ182GAYgAygJEhkKEXJlcGVhdGVkX3N0cmluZ183GAcgAygJEhkKEXJlcGVhdGVkX3N0cmluZ184GAggAygJEhkKEXJlcGVhdGVkX3N0cmluZ185GAkgAygJEhoKEnJlcGVhdGVkX3N0cmluZ18xMBgKIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMTEYCyADKAkSGgoScmVwZWF0ZWRfc3RyaW5nXzEyGAwgAygJEhoKEnJlcGVhdGVkX3N0cmluZ18xMxgNIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMTQYDiADKAkSGgoScmVwZWF0ZWRfc3RyaW5nXzE1GA8gAygJEhoKEnJlcGVhdGVkX3N0cmluZ18xNhgQIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMTcYESADKAkSGgoScmVwZWF0ZWRfc3RyaW5nXzE4GBIgAygJEhoKEnJlcGVhdGVkX3N0cmluZ18xORgTIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMjAYFCADKAkSGgoScmVwZWF0ZWRfc3RyaW5nXzIxGBUgAygJEhoKEnJlcGVhdGVkX3N0cmluZ18yMhgWIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMjMYFyADKAkSGgoScmVwZWF0ZWRfc3RyaW5nXzI0GBggAygJEhoKEnJlcGVhdGVkX3N0cmluZ18yNRgZIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMjYYGiADKAkSGgoScmVwZWF0ZWRfc3RyaW5nXzI3GBsgAygJEhoKEnJlcGVhdGVkX3N0cmluZ18yOBgcIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMjkYHSADKAkSGgoScmVwZWF0ZWRfc3RyaW5nXzMwGB4gAygJEhoKEnJlcGVhdGVkX3N0cmluZ18zMRgfIAMoCRIaChJyZXBlYXRlZF9zdHJpbmdfMzIYICADKAki0gEKFk1lc3NhZ2VDcmVhdG9yWmVyb0luaXQSCQoBaRgBIAEoBRIJCgFkGAIgASgBEjIKAW0YAyABKAsyJy5wcm90bzJfdW5pdHRlc3QuTWVzc2FnZUNyZWF0b3JaZXJvSW5pdBIMCgJvcxgKIAEoCUgAEhAKAm9jGAsgASgJQgIIAUgAEgwKAm9mGAwgASgGSAASOQoCb2wYDSABKAsyJy5wcm90bzJfdW5pdHRlc3QuTWVzc2FnZUNyZWF0b3JaZXJvSW5pdEICKAFIAEIFCgNvbmUizwEKFE1lc3NhZ2VDcmVhdG9yTWVtY3B5EgkKAXMYASABKAkSEAoBaRgCIAMoBUIFqgECGAESNAoBbRgDIAEoCzIlLnByb3RvMl91bml0dGVzdC5NZXNzYWdlQ3JlYXRvck1lbWNweUICKAESOQoCbTIYBCADKAsyLS5wcm90bzJfdW5pdHRlc3QuTWVzc2FnZUNyZWF0b3JNZW1jcHkuTTJFbnRyeRopCgdNMkVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiIwoSTWVzc2FnZUNyZWF0b3JGdW5jEg0KAWMYAyABKAlCAggBIt0CChlGYXN0UGFyc2VUYWJsZUNvbXByZXNzaW9uEhkKEWltcG9ydGFudF9maWVsZF8xGAEgASgFEhkKEWltcG9ydGFudF9maWVsZF8yGAIgASgFEhsKE3VuaW1wb3J0YW50X2ZpZWxkXzMYAyABKAUSGwoTdW5pbXBvcnRhbnRfZmllbGRfNBgEIAEoBRIbChN1bmltcG9ydGFudF9maWVsZF81GAUgASgFEhsKE3VuaW1wb3J0YW50X2ZpZWxkXzkYCSABKAUSGgoSaW1wb3J0YW50X2ZpZWxkXzExGAsgASgFEhwKFHVuaW1wb3J0YW50X2ZpZWxkXzEyGAwgASgFEhoKEmltcG9ydGFudF9maWVsZF8xNBgOIAEoBRIcChR1bmltcG9ydGFudF9maWVsZF8xNRgPIAEoBUoECAYQB0oECAcQCEoECAgQCUoECAoQC0oECA0QDkoECBAQESIwChhUZXN0TWVzc2FnZUZvck1vdmVfU21hbGwSCQoBYRgBIAEoBRIJCgFiGAIgASgFIvcDChhUZXN0TWVzc2FnZUZvck1vdmVfTGFyZ2USCgoCYTEYASABKAUSCgoCYTIYAiABKAUSCgoCYTMYAyABKAUSCgoCYTQYBCABKAUSCgoCYTUYBSABKAUSCgoCYTYYBiABKAUSCgoCYTcYByABKAUSCgoCYTgYCCABKAUSCgoCYTkYCSABKAUSCwoDYTExGAsgAygFEgsKA2ExMhgMIAMoBRILCgNhMTMYDSADKAUSCwoDYTE0GA4gAygFEgsKA2ExNRgPIAMoBRILCgNhMTYYECADKAUSCwoDYTE3GBEgAygFEgsKA2ExOBgSIAMoBRILCgNhMTkYEyADKAUSDAoEczEwMRhlIAEoCRIMCgRzMTAyGGYgASgJEgwKBHMxMDMYZyABKAkSDAoEczEwNBhoIAEoCRIMCgRzMTA1GGkgASgJEgwKBHMxMDYYaiABKAkSDAoEczEwNxhrIAEoCRIMCgRzMTA4GGwgASgJEgwKBHMxMDkYbSABKAkSDAoEczExMRhvIAMoCRIMCgRzMTEyGHAgAygJEgwKBHMxMTMYcSADKAkSDAoEczExNBhyIAMoCRIMCgRzMTE1GHMgAygJEgwKBHMxMTYYdCADKAkSDAoEczExNxh1IAMoCRIMCgRzMTE4GHYgAygJEgwKBHMxMTkYdyADKAkqZgoLRm9yZWlnbkVudW0SDwoLRk9SRUlHTl9GT08QBBIPCgtGT1JFSUdOX0JBUhAFEg8KC0ZPUkVJR05fQkFaEAYSDwoLRk9SRUlHTl9CQVgQIBITCg1GT1JFSUdOX0xBUkdFEMDEBypBChZUZXN0UmVzZXJ2ZWRFbnVtRmllbGRzEgsKB1VOS05PV04QACIECAIQAiIECA8QDyIECAkQCyoDYmFyKgNiYXoqiQEKD0ZvcmVpZ25PcGVuRW51bRIYChRGT1JFSUdOX09QRU5fVU5LTk9XThAAEhQKEEZPUkVJR05fT1BFTl9GT08QBBIUChBGT1JFSUdOX09QRU5fQkFSEAUSFAoQRk9SRUlHTl9PUEVOX0JBWhAGEhQKEEZPUkVJR05fT1BFTl9CQVgQIBoEOgIQASpLChRUZXN0RW51bVdpdGhEdXBWYWx1ZRIICgRGT08xEAESCAoEQkFSMRACEgcKA0JBWhADEggKBEZPTzIQARIICgRCQVIyEAIaAhABKokBCg5UZXN0U3BhcnNlRW51bRIMCghTUEFSU0VfQRB7Eg4KCFNQQVJTRV9CEKbnAxIPCghTUEFSU0VfQxCysYAGEhUKCFNQQVJTRV9EEPH//////////wESFQoIU1BBUlNFX0UQtN78////////ARIMCghTUEFSU0VfRhAAEgwKCFNQQVJTRV9HEAIqiw8KDVZlcnlMYXJnZUVudW0SFgoSRU5VTV9MQUJFTF9ERUZBVUxUEAASEAoMRU5VTV9MQUJFTF8xEAESEAoMRU5VTV9MQUJFTF8yEAISEAoMRU5VTV9MQUJFTF8zEAMSEAoMRU5VTV9MQUJFTF80EAQSEAoMRU5VTV9MQUJFTF81EAUSEAoMRU5VTV9MQUJFTF82EAYSEAoMRU5VTV9MQUJFTF83EAcSEAoMRU5VTV9MQUJFTF84EAgSEAoMRU5VTV9MQUJFTF85EAkSEQoNRU5VTV9MQUJFTF8xMBAKEhEKDUVOVU1fTEFCRUxfMTEQCxIRCg1FTlVNX0xBQkVMXzEyEAwSEQoNRU5VTV9MQUJFTF8xMxANEhEKDUVOVU1fTEFCRUxfMTQQDhIRCg1FTlVNX0xBQkVMXzE1EA8SEQoNRU5VTV9MQUJFTF8xNhAQEhEKDUVOVU1fTEFCRUxfMTcQERIRCg1FTlVNX0xBQkVMXzE4EBISEQoNRU5VTV9MQUJFTF8xORATEhEKDUVOVU1fTEFCRUxfMjAQFBIRCg1FTlVNX0xBQkVMXzIxEBUSEQoNRU5VTV9MQUJFTF8yMhAWEhEKDUVOVU1fTEFCRUxfMjMQFxIRCg1FTlVNX0xBQkVMXzI0EBgSEQoNRU5VTV9MQUJFTF8yNRAZEhEKDUVOVU1fTEFCRUxfMjYQGhIRCg1FTlVNX0xBQkVMXzI3EBsSEQoNRU5VTV9MQUJFTF8yOBAcEhEKDUVOVU1fTEFCRUxfMjkQHRIRCg1FTlVNX0xBQkVMXzMwEB4SEQoNRU5VTV9MQUJFTF8zMRAfEhEKDUVOVU1fTEFCRUxfMzIQIBIRCg1FTlVNX0xBQkVMXzMzECESEQoNRU5VTV9MQUJFTF8zNBAiEhEKDUVOVU1fTEFCRUxfMzUQIxIRCg1FTlVNX0xBQkVMXzM2ECQSEQoNRU5VTV9MQUJFTF8zNxAlEhEKDUVOVU1fTEFCRUxfMzgQJhIRCg1FTlVNX0xBQkVMXzM5ECcSEQoNRU5VTV9MQUJFTF80MBAoEhEKDUVOVU1fTEFCRUxfNDEQKRIRCg1FTlVNX0xBQkVMXzQyECoSEQoNRU5VTV9MQUJFTF80MxArEhEKDUVOVU1fTEFCRUxfNDQQLBIRCg1FTlVNX0xBQkVMXzQ1EC0SEQoNRU5VTV9MQUJFTF80NhAuEhEKDUVOVU1fTEFCRUxfNDcQLxIRCg1FTlVNX0xBQkVMXzQ4EDASEQoNRU5VTV9MQUJFTF80ORAxEhEKDUVOVU1fTEFCRUxfNTAQMhIRCg1FTlVNX0xBQkVMXzUxEDMSEQoNRU5VTV9MQUJFTF81MhA0EhEKDUVOVU1fTEFCRUxfNTMQNRIRCg1FTlVNX0xBQkVMXzU0EDYSEQoNRU5VTV9MQUJFTF81NRA3EhEKDUVOVU1fTEFCRUxfNTYQOBIRCg1FTlVNX0xBQkVMXzU3EDkSEQoNRU5VTV9MQUJFTF81OBA6EhEKDUVOVU1fTEFCRUxfNTkQOxIRCg1FTlVNX0xBQkVMXzYwEDwSEQoNRU5VTV9MQUJFTF82MRA9EhEKDUVOVU1fTEFCRUxfNjIQPhIRCg1FTlVNX0xBQkVMXzYzED8SEQoNRU5VTV9MQUJFTF82NBBAEhEKDUVOVU1fTEFCRUxfNjUQQRIRCg1FTlVNX0xBQkVMXzY2EEISEQoNRU5VTV9MQUJFTF82NxBDEhEKDUVOVU1fTEFCRUxfNjgQRBIRCg1FTlVNX0xBQkVMXzY5EEUSEQoNRU5VTV9MQUJFTF83MBBGEhEKDUVOVU1fTEFCRUxfNzEQRxIRCg1FTlVNX0xBQkVMXzcyEEgSEQoNRU5VTV9MQUJFTF83MxBJEhEKDUVOVU1fTEFCRUxfNzQQShIRCg1FTlVNX0xBQkVMXzc1EEsSEQoNRU5VTV9MQUJFTF83NhBMEhEKDUVOVU1fTEFCRUxfNzcQTRIRCg1FTlVNX0xBQkVMXzc4EE4SEQoNRU5VTV9MQUJFTF83ORBPEhEKDUVOVU1fTEFCRUxfODAQUBIRCg1FTlVNX0xBQkVMXzgxEFESEQoNRU5VTV9MQUJFTF84MhBSEhEKDUVOVU1fTEFCRUxfODMQUxIRCg1FTlVNX0xBQkVMXzg0EFQSEQoNRU5VTV9MQUJFTF84NRBVEhEKDUVOVU1fTEFCRUxfODYQVhIRCg1FTlVNX0xBQkVMXzg3EFcSEQoNRU5VTV9MQUJFTF84OBBYEhEKDUVOVU1fTEFCRUxfODkQWRIRCg1FTlVNX0xBQkVMXzkwEFoSEQoNRU5VTV9MQUJFTF85MRBbEhEKDUVOVU1fTEFCRUxfOTIQXBIRCg1FTlVNX0xBQkVMXzkzEF0SEQoNRU5VTV9MQUJFTF85NBBeEhEKDUVOVU1fTEFCRUxfOTUQXxIRCg1FTlVNX0xBQkVMXzk2EGASEQoNRU5VTV9MQUJFTF85NxBhEhEKDUVOVU1fTEFCRUxfOTgQYhIRCg1FTlVNX0xBQkVMXzk5EGMSEgoORU5VTV9MQUJFTF8xMDAQZDKRAQoLVGVzdFNlcnZpY2USQAoDRm9vEhsucHJvdG8yX3VuaXR0ZXN0LkZvb1JlcXVlc3QaHC5wcm90bzJfdW5pdHRlc3QuRm9vUmVzcG9uc2USQAoDQmFyEhsucHJvdG8yX3VuaXR0ZXN0LkJhclJlcXVlc3QaHC5wcm90bzJfdW5pdHRlc3QuQmFyUmVzcG9uc2U6XAoYb3B0aW9uYWxfaW50MzJfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAEgASgFUhZvcHRpb25hbEludDMyRXh0ZW5zaW9uOlwKGG9wdGlvbmFsX2ludDY0X2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgCIAEoA1IWb3B0aW9uYWxJbnQ2NEV4dGVuc2lvbjpeChlvcHRpb25hbF91aW50MzJfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAMgASgNUhdvcHRpb25hbFVpbnQzMkV4dGVuc2lvbjpeChlvcHRpb25hbF91aW50NjRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAQgASgEUhdvcHRpb25hbFVpbnQ2NEV4dGVuc2lvbjpeChlvcHRpb25hbF9zaW50MzJfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAUgASgRUhdvcHRpb25hbFNpbnQzMkV4dGVuc2lvbjpeChlvcHRpb25hbF9zaW50NjRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAYgASgSUhdvcHRpb25hbFNpbnQ2NEV4dGVuc2lvbjpgChpvcHRpb25hbF9maXhlZDMyX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgHIAEoB1IYb3B0aW9uYWxGaXhlZDMyRXh0ZW5zaW9uOmAKGm9wdGlvbmFsX2ZpeGVkNjRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAggASgGUhhvcHRpb25hbEZpeGVkNjRFeHRlbnNpb246Ygobb3B0aW9uYWxfc2ZpeGVkMzJfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAkgASgPUhlvcHRpb25hbFNmaXhlZDMyRXh0ZW5zaW9uOmIKG29wdGlvbmFsX3NmaXhlZDY0X2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgKIAEoEFIZb3B0aW9uYWxTZml4ZWQ2NEV4dGVuc2lvbjpcChhvcHRpb25hbF9mbG9hdF9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYCyABKAJSFm9wdGlvbmFsRmxvYXRFeHRlbnNpb246XgoZb3B0aW9uYWxfZG91YmxlX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgMIAEoAVIXb3B0aW9uYWxEb3VibGVFeHRlbnNpb246WgoXb3B0aW9uYWxfYm9vbF9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYDSABKAhSFW9wdGlvbmFsQm9vbEV4dGVuc2lvbjpeChlvcHRpb25hbF9zdHJpbmdfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGA4gASgJUhdvcHRpb25hbFN0cmluZ0V4dGVuc2lvbjpcChhvcHRpb25hbF9ieXRlc19leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYDyABKAxSFm9wdGlvbmFsQnl0ZXNFeHRlbnNpb246jAEKF29wdGlvbmFsZ3JvdXBfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBAgASgLMigucHJvdG8yX3VuaXR0ZXN0Lk9wdGlvbmFsR3JvdXBfZXh0ZW5zaW9uQgWqAQIoAlIWb3B0aW9uYWxncm91cEV4dGVuc2lvbjqaAQohb3B0aW9uYWxfbmVzdGVkX21lc3NhZ2VfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBIgASgLMisucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlUh5vcHRpb25hbE5lc3RlZE1lc3NhZ2VFeHRlbnNpb246kAEKIm9wdGlvbmFsX2ZvcmVpZ25fbWVzc2FnZV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYEyABKAsyHy5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2VSH29wdGlvbmFsRm9yZWlnbk1lc3NhZ2VFeHRlbnNpb246lAEKIW9wdGlvbmFsX2ltcG9ydF9tZXNzYWdlX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgUIAEoCzIlLnByb3RvMl91bml0dGVzdF9pbXBvcnQuSW1wb3J0TWVzc2FnZVIeb3B0aW9uYWxJbXBvcnRNZXNzYWdlRXh0ZW5zaW9uOpEBCh5vcHRpb25hbF9uZXN0ZWRfZW51bV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYFSABKA4yKC5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW1SG29wdGlvbmFsTmVzdGVkRW51bUV4dGVuc2lvbjqHAQofb3B0aW9uYWxfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgWIAEoDjIcLnByb3RvMl91bml0dGVzdC5Gb3JlaWduRW51bVIcb3B0aW9uYWxGb3JlaWduRW51bUV4dGVuc2lvbjqLAQoeb3B0aW9uYWxfaW1wb3J0X2VudW1fZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBcgASgOMiIucHJvdG8yX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVtUhtvcHRpb25hbEltcG9ydEVudW1FeHRlbnNpb246bQofb3B0aW9uYWxfc3RyaW5nX3BpZWNlX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgYIAEoCUICCAJSHG9wdGlvbmFsU3RyaW5nUGllY2VFeHRlbnNpb246WgoXb3B0aW9uYWxfY29yZF9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGSABKAlSFW9wdGlvbmFsQ29yZEV4dGVuc2lvbjplCh1vcHRpb25hbF9ieXRlc19jb3JkX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhWIAEoDFIab3B0aW9uYWxCeXRlc0NvcmRFeHRlbnNpb246pwEKKG9wdGlvbmFsX3B1YmxpY19pbXBvcnRfbWVzc2FnZV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGiABKAsyKy5wcm90bzJfdW5pdHRlc3RfaW1wb3J0LlB1YmxpY0ltcG9ydE1lc3NhZ2VSJG9wdGlvbmFsUHVibGljSW1wb3J0TWVzc2FnZUV4dGVuc2lvbjqaAQofb3B0aW9uYWxfbGF6eV9tZXNzYWdlX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgbIAEoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUICKAFSHG9wdGlvbmFsTGF6eU1lc3NhZ2VFeHRlbnNpb246rwEKKm9wdGlvbmFsX3VudmVyaWZpZWRfbGF6eV9tZXNzYWdlX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgcIAEoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUICeAFSJm9wdGlvbmFsVW52ZXJpZmllZExhenlNZXNzYWdlRXh0ZW5zaW9uOlwKGHJlcGVhdGVkX2ludDMyX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgfIAMoBVIWcmVwZWF0ZWRJbnQzMkV4dGVuc2lvbjpcChhyZXBlYXRlZF9pbnQ2NF9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYICADKANSFnJlcGVhdGVkSW50NjRFeHRlbnNpb246XgoZcmVwZWF0ZWRfdWludDMyX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxghIAMoDVIXcmVwZWF0ZWRVaW50MzJFeHRlbnNpb246XgoZcmVwZWF0ZWRfdWludDY0X2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgiIAMoBFIXcmVwZWF0ZWRVaW50NjRFeHRlbnNpb246XgoZcmVwZWF0ZWRfc2ludDMyX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgjIAMoEVIXcmVwZWF0ZWRTaW50MzJFeHRlbnNpb246XgoZcmVwZWF0ZWRfc2ludDY0X2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgkIAMoElIXcmVwZWF0ZWRTaW50NjRFeHRlbnNpb246YAoacmVwZWF0ZWRfZml4ZWQzMl9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYJSADKAdSGHJlcGVhdGVkRml4ZWQzMkV4dGVuc2lvbjpgChpyZXBlYXRlZF9maXhlZDY0X2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgmIAMoBlIYcmVwZWF0ZWRGaXhlZDY0RXh0ZW5zaW9uOmIKG3JlcGVhdGVkX3NmaXhlZDMyX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgnIAMoD1IZcmVwZWF0ZWRTZml4ZWQzMkV4dGVuc2lvbjpiChtyZXBlYXRlZF9zZml4ZWQ2NF9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKCADKBBSGXJlcGVhdGVkU2ZpeGVkNjRFeHRlbnNpb246XAoYcmVwZWF0ZWRfZmxvYXRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCkgAygCUhZyZXBlYXRlZEZsb2F0RXh0ZW5zaW9uOl4KGXJlcGVhdGVkX2RvdWJsZV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKiADKAFSF3JlcGVhdGVkRG91YmxlRXh0ZW5zaW9uOloKF3JlcGVhdGVkX2Jvb2xfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCsgAygIUhVyZXBlYXRlZEJvb2xFeHRlbnNpb246XgoZcmVwZWF0ZWRfc3RyaW5nX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgsIAMoCVIXcmVwZWF0ZWRTdHJpbmdFeHRlbnNpb246XAoYcmVwZWF0ZWRfYnl0ZXNfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGC0gAygMUhZyZXBlYXRlZEJ5dGVzRXh0ZW5zaW9uOowBChdyZXBlYXRlZGdyb3VwX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxguIAMoCzIoLnByb3RvMl91bml0dGVzdC5SZXBlYXRlZEdyb3VwX2V4dGVuc2lvbkIFqgECKAJSFnJlcGVhdGVkZ3JvdXBFeHRlbnNpb246mgEKIXJlcGVhdGVkX25lc3RlZF9tZXNzYWdlX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgwIAMoCzIrLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZVIecmVwZWF0ZWROZXN0ZWRNZXNzYWdlRXh0ZW5zaW9uOpABCiJyZXBlYXRlZF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDEgAygLMh8ucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlUh9yZXBlYXRlZEZvcmVpZ25NZXNzYWdlRXh0ZW5zaW9uOpQBCiFyZXBlYXRlZF9pbXBvcnRfbWVzc2FnZV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMiADKAsyJS5wcm90bzJfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2VSHnJlcGVhdGVkSW1wb3J0TWVzc2FnZUV4dGVuc2lvbjqRAQoecmVwZWF0ZWRfbmVzdGVkX2VudW1fZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDMgAygOMigucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtUhtyZXBlYXRlZE5lc3RlZEVudW1FeHRlbnNpb246hwEKH3JlcGVhdGVkX2ZvcmVpZ25fZW51bV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNCADKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW1SHHJlcGVhdGVkRm9yZWlnbkVudW1FeHRlbnNpb246iwEKHnJlcGVhdGVkX2ltcG9ydF9lbnVtX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg1IAMoDjIiLnByb3RvMl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bVIbcmVwZWF0ZWRJbXBvcnRFbnVtRXh0ZW5zaW9uOm0KH3JlcGVhdGVkX3N0cmluZ19waWVjZV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNiADKAlCAggCUhxyZXBlYXRlZFN0cmluZ1BpZWNlRXh0ZW5zaW9uOloKF3JlcGVhdGVkX2NvcmRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDcgAygJUhVyZXBlYXRlZENvcmRFeHRlbnNpb246mgEKH3JlcGVhdGVkX2xhenlfbWVzc2FnZV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYOSADKAsyKy5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2VCAigBUhxyZXBlYXRlZExhenlNZXNzYWdlRXh0ZW5zaW9uOl4KF2RlZmF1bHRfaW50MzJfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD0gASgFOgI0MVIVZGVmYXVsdEludDMyRXh0ZW5zaW9uOl4KF2RlZmF1bHRfaW50NjRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD4gASgDOgI0MlIVZGVmYXVsdEludDY0RXh0ZW5zaW9uOmAKGGRlZmF1bHRfdWludDMyX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg/IAEoDToCNDNSFmRlZmF1bHRVaW50MzJFeHRlbnNpb246YAoYZGVmYXVsdF91aW50NjRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEAgASgEOgI0NFIWZGVmYXVsdFVpbnQ2NEV4dGVuc2lvbjphChhkZWZhdWx0X3NpbnQzMl9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQSABKBE6Ay00NVIWZGVmYXVsdFNpbnQzMkV4dGVuc2lvbjpgChhkZWZhdWx0X3NpbnQ2NF9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQiABKBI6AjQ2UhZkZWZhdWx0U2ludDY0RXh0ZW5zaW9uOmIKGWRlZmF1bHRfZml4ZWQzMl9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQyABKAc6AjQ3UhdkZWZhdWx0Rml4ZWQzMkV4dGVuc2lvbjpiChlkZWZhdWx0X2ZpeGVkNjRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEQgASgGOgI0OFIXZGVmYXVsdEZpeGVkNjRFeHRlbnNpb246ZAoaZGVmYXVsdF9zZml4ZWQzMl9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYRSABKA86AjQ5UhhkZWZhdWx0U2ZpeGVkMzJFeHRlbnNpb246ZQoaZGVmYXVsdF9zZml4ZWQ2NF9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYRiABKBA6Ay01MFIYZGVmYXVsdFNmaXhlZDY0RXh0ZW5zaW9uOmAKF2RlZmF1bHRfZmxvYXRfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEcgASgCOgQ1MS41UhVkZWZhdWx0RmxvYXRFeHRlbnNpb246YwoYZGVmYXVsdF9kb3VibGVfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEggASgBOgU1MjAwMFIWZGVmYXVsdERvdWJsZUV4dGVuc2lvbjpeChZkZWZhdWx0X2Jvb2xfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEkgASgIOgR0cnVlUhRkZWZhdWx0Qm9vbEV4dGVuc2lvbjpjChhkZWZhdWx0X3N0cmluZ19leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYSiABKAk6BWhlbGxvUhZkZWZhdWx0U3RyaW5nRXh0ZW5zaW9uOmEKF2RlZmF1bHRfYnl0ZXNfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEsgASgMOgV3b3JsZFIVZGVmYXVsdEJ5dGVzRXh0ZW5zaW9uOpQBCh1kZWZhdWx0X25lc3RlZF9lbnVtX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhRIAEoDjIoLnByb3RvMl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bToDQkFSUhpkZWZhdWx0TmVzdGVkRW51bUV4dGVuc2lvbjqSAQoeZGVmYXVsdF9mb3JlaWduX2VudW1fZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFIgASgOMhwucHJvdG8yX3VuaXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JFSUdOX0JBUlIbZGVmYXVsdEZvcmVpZ25FbnVtRXh0ZW5zaW9uOpUBCh1kZWZhdWx0X2ltcG9ydF9lbnVtX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhTIAEoDjIiLnByb3RvMl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bToKSU1QT1JUX0JBUlIaZGVmYXVsdEltcG9ydEVudW1FeHRlbnNpb246cAoeZGVmYXVsdF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFQgASgJOgNhYmNCAggCUhtkZWZhdWx0U3RyaW5nUGllY2VFeHRlbnNpb246XQoWZGVmYXVsdF9jb3JkX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhVIAEoCToDMTIzUhRkZWZhdWx0Q29yZEV4dGVuc2lvbjpYChZvbmVvZl91aW50MzJfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGG8gASgNUhRvbmVvZlVpbnQzMkV4dGVuc2lvbjqUAQoeb25lb2ZfbmVzdGVkX21lc3NhZ2VfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGHAgASgLMisucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlUhtvbmVvZk5lc3RlZE1lc3NhZ2VFeHRlbnNpb246WAoWb25lb2Zfc3RyaW5nX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhxIAEoCVIUb25lb2ZTdHJpbmdFeHRlbnNpb246VgoVb25lb2ZfYnl0ZXNfZXh0ZW5zaW9uEiIucHJvdG8yX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGHIgASgMUhNvbmVvZkJ5dGVzRXh0ZW5zaW9uOm4KHm9wdGlvbmFsX3V0Zjhfc3RyaW5nX2V4dGVuc2lvbhIiLnByb3RvMl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhzIAEoCUIFqgECIAJSG29wdGlvbmFsVXRmOFN0cmluZ0V4dGVuc2lvbjpuCh5yZXBlYXRlZF91dGY4X3N0cmluZ19leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYdCADKAlCBaoBAiACUhtyZXBlYXRlZFV0ZjhTdHJpbmdFeHRlbnNpb246fwoacmVxdWlyZWRfbWVzc2FnZV9leHRlbnNpb24SIi5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYdSABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdFJlcXVpcmVkUhhyZXF1aXJlZE1lc3NhZ2VFeHRlbnNpb246UwoTbXlfZXh0ZW5zaW9uX3N0cmluZxIjLnByb3RvMl91bml0dGVzdC5UZXN0RmllbGRPcmRlcmluZ3MYMiABKAlSEW15RXh0ZW5zaW9uU3RyaW5nOk0KEG15X2V4dGVuc2lvbl9pbnQSIy5wcm90bzJfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdzGAUgASgFUg5teUV4dGVuc2lvbkludDpiChZwYWNrZWRfaW50MzJfZXh0ZW5zaW9uEiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGFogAygFQgWqAQIYAVIUcGFja2VkSW50MzJFeHRlbnNpb246YgoWcGFja2VkX2ludDY0X2V4dGVuc2lvbhIlLnByb3RvMl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhbIAMoA0IFqgECGAFSFHBhY2tlZEludDY0RXh0ZW5zaW9uOmQKF3BhY2tlZF91aW50MzJfZXh0ZW5zaW9uEiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGFwgAygNQgWqAQIYAVIVcGFja2VkVWludDMyRXh0ZW5zaW9uOmQKF3BhY2tlZF91aW50NjRfZXh0ZW5zaW9uEiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF0gAygEQgWqAQIYAVIVcGFja2VkVWludDY0RXh0ZW5zaW9uOmQKF3BhY2tlZF9zaW50MzJfZXh0ZW5zaW9uEiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF4gAygRQgWqAQIYAVIVcGFja2VkU2ludDMyRXh0ZW5zaW9uOmQKF3BhY2tlZF9zaW50NjRfZXh0ZW5zaW9uEiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF8gAygSQgWqAQIYAVIVcGFja2VkU2ludDY0RXh0ZW5zaW9uOmYKGHBhY2tlZF9maXhlZDMyX2V4dGVuc2lvbhIlLnByb3RvMl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhgIAMoB0IFqgECGAFSFnBhY2tlZEZpeGVkMzJFeHRlbnNpb246ZgoYcGFja2VkX2ZpeGVkNjRfZXh0ZW5zaW9uEiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGEgAygGQgWqAQIYAVIWcGFja2VkRml4ZWQ2NEV4dGVuc2lvbjpoChlwYWNrZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEiUucHJvdG8yX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGIgAygPQgWqAQIYAVIXcGFja2VkU2ZpeGVkMzJFeHRlbnNpb246aAoZcGFja2VkX3NmaXhlZDY0X2V4dGVuc2lvbhIlLnByb3RvMl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhjIAMoEEIFqgECGAFSF3BhY2tlZFNmaXhlZDY0RXh0ZW5zaW9uOmIKFnBhY2tlZF9mbG9hdF9leHRlbnNpb24SJS5wcm90bzJfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYZCADKAJCBaoBAhgBUhRwYWNrZWRGbG9hdEV4dGVuc2lvbjpkChdwYWNrZWRfZG91YmxlX2V4dGVuc2lvbhIlLnByb3RvMl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhlIAMoAUIFqgECGAFSFXBhY2tlZERvdWJsZUV4dGVuc2lvbjpgChVwYWNrZWRfYm9vbF9leHRlbnNpb24SJS5wcm90bzJfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYZiADKAhCBaoBAhgBUhNwYWNrZWRCb29sRXh0ZW5zaW9uOn4KFXBhY2tlZF9lbnVtX2V4dGVuc2lvbhIlLnByb3RvMl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhnIAMoDjIcLnByb3RvMl91bml0dGVzdC5Gb3JlaWduRW51bUIFqgECGAFSE3BhY2tlZEVudW1FeHRlbnNpb246YQoYdW5wYWNrZWRfaW50MzJfZXh0ZW5zaW9uEicucHJvdG8yX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYWiADKAVSFnVucGFja2VkSW50MzJFeHRlbnNpb246YQoYdW5wYWNrZWRfaW50NjRfZXh0ZW5zaW9uEicucHJvdG8yX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYWyADKANSFnVucGFja2VkSW50NjRFeHRlbnNpb246YwoZdW5wYWNrZWRfdWludDMyX2V4dGVuc2lvbhInLnByb3RvMl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGFwgAygNUhd1bnBhY2tlZFVpbnQzMkV4dGVuc2lvbjpjChl1bnBhY2tlZF91aW50NjRfZXh0ZW5zaW9uEicucHJvdG8yX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYXSADKARSF3VucGFja2VkVWludDY0RXh0ZW5zaW9uOmMKGXVucGFja2VkX3NpbnQzMl9leHRlbnNpb24SJy5wcm90bzJfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxheIAMoEVIXdW5wYWNrZWRTaW50MzJFeHRlbnNpb246YwoZdW5wYWNrZWRfc2ludDY0X2V4dGVuc2lvbhInLnByb3RvMl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGF8gAygSUhd1bnBhY2tlZFNpbnQ2NEV4dGVuc2lvbjplChp1bnBhY2tlZF9maXhlZDMyX2V4dGVuc2lvbhInLnByb3RvMl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGAgAygHUhh1bnBhY2tlZEZpeGVkMzJFeHRlbnNpb246ZQoadW5wYWNrZWRfZml4ZWQ2NF9leHRlbnNpb24SJy5wcm90bzJfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhhIAMoBlIYdW5wYWNrZWRGaXhlZDY0RXh0ZW5zaW9uOmcKG3VucGFja2VkX3NmaXhlZDMyX2V4dGVuc2lvbhInLnByb3RvMl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGIgAygPUhl1bnBhY2tlZFNmaXhlZDMyRXh0ZW5zaW9uOmcKG3VucGFja2VkX3NmaXhlZDY0X2V4dGVuc2lvbhInLnByb3RvMl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGMgAygQUhl1bnBhY2tlZFNmaXhlZDY0RXh0ZW5zaW9uOmEKGHVucGFja2VkX2Zsb2F0X2V4dGVuc2lvbhInLnByb3RvMl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGQgAygCUhZ1bnBhY2tlZEZsb2F0RXh0ZW5zaW9uOmMKGXVucGFja2VkX2RvdWJsZV9leHRlbnNpb24SJy5wcm90bzJfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhlIAMoAVIXdW5wYWNrZWREb3VibGVFeHRlbnNpb246XwoXdW5wYWNrZWRfYm9vbF9leHRlbnNpb24SJy5wcm90bzJfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhmIAMoCFIVdW5wYWNrZWRCb29sRXh0ZW5zaW9uOn0KF3VucGFja2VkX2VudW1fZXh0ZW5zaW9uEicucHJvdG8yX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYZyADKA4yHC5wcm90bzJfdW5pdHRlc3QuRm9yZWlnbkVudW1SFXVucGFja2VkRW51bUV4dGVuc2lvbjpuCg50ZXN0X2FsbF90eXBlcxIlLnByb3RvMl91bml0dGVzdC5UZXN0SHVnZUZpZWxkTnVtYmVycxjgqv//ASABKAsyHS5wcm90bzJfdW5pdHRlc3QuVGVzdEFsbFR5cGVzUgx0ZXN0QWxsVHlwZXM6ewoldGVzdF9leHRlbnNpb25faW5zaWRlX3RhYmxlX2V4dGVuc2lvbhIpLnByb3RvMl91bml0dGVzdC5UZXN0RXh0ZW5zaW9uSW5zaWRlVGFibGUYBSABKAVSIXRlc3RFeHRlbnNpb25JbnNpZGVUYWJsZUV4dGVuc2lvbjqlAQoFaW5uZXISVi5wcm90bzJfdW5pdHRlc3QuVGVzdE5lc3RlZEdyb3VwRXh0ZW5zaW9uT3V0ZXIuTGF5ZXIxT3B0aW9uYWxHcm91cC5MYXllcjJSZXBlYXRlZEdyb3VwGAMgASgLMjcucHJvdG8yX3VuaXR0ZXN0LlRlc3ROZXN0ZWRHcm91cEV4dGVuc2lvbklubmVyRXh0ZW5zaW9uUgVpbm5lcjpTChJyZWRhY3RlZF9leHRlbnNpb24SHy5wcm90bzJfdW5pdHRlc3QuUmVkYWN0ZWRGaWVsZHMYFCABKAlCA4ABAVIRcmVkYWN0ZWRFeHRlbnNpb25CJkINVW5pdHRlc3RQcm90b0gBgAEBiAEBkAEB+AEBkgMGEAIYAiADYghlZGl0aW9uc3DoBw", [file_google_protobuf_unittest_import]);

/**
 * This proto includes every type of field in both singular and repeated
 * forms.
 *
 * @generated from message proto2_unittest.TestAllTypes
 */
export type TestAllTypes = Message<"proto2_unittest.TestAllTypes"> & {
  /**
   * Singular
   *
   * @generated from field: int32 optional_int32 = 1;
   */
  optionalInt32: number;

  /**
   * @generated from field: int64 optional_int64 = 2;
   */
  optionalInt64: bigint;

  /**
   * @generated from field: uint32 optional_uint32 = 3;
   */
  optionalUint32: number;

  /**
   * @generated from field: uint64 optional_uint64 = 4;
   */
  optionalUint64: bigint;

  /**
   * @generated from field: sint32 optional_sint32 = 5;
   */
  optionalSint32: number;

  /**
   * @generated from field: sint64 optional_sint64 = 6;
   */
  optionalSint64: bigint;

  /**
   * @generated from field: fixed32 optional_fixed32 = 7;
   */
  optionalFixed32: number;

  /**
   * @generated from field: fixed64 optional_fixed64 = 8;
   */
  optionalFixed64: bigint;

  /**
   * @generated from field: sfixed32 optional_sfixed32 = 9;
   */
  optionalSfixed32: number;

  /**
   * @generated from field: sfixed64 optional_sfixed64 = 10;
   */
  optionalSfixed64: bigint;

  /**
   * @generated from field: float optional_float = 11;
   */
  optionalFloat: number;

  /**
   * @generated from field: double optional_double = 12;
   */
  optionalDouble: number;

  /**
   * @generated from field: bool optional_bool = 13;
   */
  optionalBool: boolean;

  /**
   * @generated from field: string optional_string = 14;
   */
  optionalString: string;

  /**
   * @generated from field: bytes optional_bytes = 15;
   */
  optionalBytes: Uint8Array;

  /**
   * @generated from field: proto2_unittest.TestAllTypes.OptionalGroup optionalgroup = 16 [features.message_encoding = DELIMITED];
   */
  optionalgroup?: TestAllTypes_OptionalGroup;

  /**
   * @generated from field: proto2_unittest.TestAllTypes.NestedMessage optional_nested_message = 18;
   */
  optionalNestedMessage?: TestAllTypes_NestedMessage;

  /**
   * @generated from field: proto2_unittest.ForeignMessage optional_foreign_message = 19;
   */
  optionalForeignMessage?: ForeignMessage;

  /**
   * @generated from field: proto2_unittest_import.ImportMessage optional_import_message = 20;
   */
  optionalImportMessage?: ImportMessage;

  /**
   * @generated from field: proto2_unittest.TestAllTypes.NestedEnum optional_nested_enum = 21;
   */
  optionalNestedEnum: TestAllTypes_NestedEnum;

  /**
   * @generated from field: proto2_unittest.ForeignEnum optional_foreign_enum = 22;
   */
  optionalForeignEnum: ForeignEnum;

  /**
   * @generated from field: proto2_unittest_import.ImportEnum optional_import_enum = 23;
   */
  optionalImportEnum: ImportEnum;

  /**
   * @generated from field: string optional_string_piece = 24;
   */
  optionalStringPiece: string;

  /**
   * @generated from field: string optional_cord = 25;
   */
  optionalCord: string;

  /**
   * @generated from field: bytes optional_bytes_cord = 86;
   */
  optionalBytesCord: Uint8Array;

  /**
   * Defined in unittest_import_public.proto
   *
   * @generated from field: proto2_unittest_import.PublicImportMessage optional_public_import_message = 26;
   */
  optionalPublicImportMessage?: PublicImportMessage;

  /**
   * @generated from field: proto2_unittest.TestAllTypes.NestedMessage optional_lazy_message = 27;
   */
  optionalLazyMessage?: TestAllTypes_NestedMessage;

  /**
   * @generated from field: proto2_unittest.TestAllTypes.NestedMessage optional_unverified_lazy_message = 28;
   */
  optionalUnverifiedLazyMessage?: TestAllTypes_NestedMessage;

  /**
   * Repeated
   *
   * @generated from field: repeated int32 repeated_int32 = 31;
   */
  repeatedInt32: number[];

  /**
   * @generated from field: repeated int64 repeated_int64 = 32;
   */
  repeatedInt64: bigint[];

  /**
   * @generated from field: repeated uint32 repeated_uint32 = 33;
   */
  repeatedUint32: number[];

  /**
   * @generated from field: repeated uint64 repeated_uint64 = 34;
   */
  repeatedUint64: bigint[];

  /**
   * @generated from field: repeated sint32 repeated_sint32 = 35;
   */
  repeatedSint32: number[];

  /**
   * @generated from field: repeated sint64 repeated_sint64 = 36;
   */
  repeatedSint64: bigint[];

  /**
   * @generated from field: repeated fixed32 repeated_fixed32 = 37;
   */
  repeatedFixed32: number[];

  /**
   * @generated from field: repeated fixed64 repeated_fixed64 = 38;
   */
  repeatedFixed64: bigint[];

  /**
   * @generated from field: repeated sfixed32 repeated_sfixed32 = 39;
   */
  repeatedSfixed32: number[];

  /**
   * @generated from field: repeated sfixed64 repeated_sfixed64 = 40;
   */
  repeatedSfixed64: bigint[];

  /**
   * @generated from field: repeated float repeated_float = 41;
   */
  repeatedFloat: number[];

  /**
   * @generated from field: repeated double repeated_double = 42;
   */
  repeatedDouble: number[];

  /**
   * @generated from field: repeated bool repeated_bool = 43;
   */
  repeatedBool: boolean[];

  /**
   * @generated from field: repeated string repeated_string = 44;
   */
  repeatedString: string[];

  /**
   * @generated from field: repeated bytes repeated_bytes = 45;
   */
  repeatedBytes: Uint8Array[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes.RepeatedGroup repeatedgroup = 46 [features.message_encoding = DELIMITED];
   */
  repeatedgroup: TestAllTypes_RepeatedGroup[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes.NestedMessage repeated_nested_message = 48;
   */
  repeatedNestedMessage: TestAllTypes_NestedMessage[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignMessage repeated_foreign_message = 49;
   */
  repeatedForeignMessage: ForeignMessage[];

  /**
   * @generated from field: repeated proto2_unittest_import.ImportMessage repeated_import_message = 50;
   */
  repeatedImportMessage: ImportMessage[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes.NestedEnum repeated_nested_enum = 51;
   */
  repeatedNestedEnum: TestAllTypes_NestedEnum[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignEnum repeated_foreign_enum = 52;
   */
  repeatedForeignEnum: ForeignEnum[];

  /**
   * @generated from field: repeated proto2_unittest_import.ImportEnum repeated_import_enum = 53;
   */
  repeatedImportEnum: ImportEnum[];

  /**
   * @generated from field: repeated string repeated_string_piece = 54;
   */
  repeatedStringPiece: string[];

  /**
   * @generated from field: repeated string repeated_cord = 55;
   */
  repeatedCord: string[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes.NestedMessage repeated_lazy_message = 57;
   */
  repeatedLazyMessage: TestAllTypes_NestedMessage[];

  /**
   * Singular with defaults
   *
   * @generated from field: int32 default_int32 = 61 [default = 41];
   */
  defaultInt32: number;

  /**
   * @generated from field: int64 default_int64 = 62 [default = 42];
   */
  defaultInt64: bigint;

  /**
   * @generated from field: uint32 default_uint32 = 63 [default = 43];
   */
  defaultUint32: number;

  /**
   * @generated from field: uint64 default_uint64 = 64 [default = 44];
   */
  defaultUint64: bigint;

  /**
   * @generated from field: sint32 default_sint32 = 65 [default = -45];
   */
  defaultSint32: number;

  /**
   * @generated from field: sint64 default_sint64 = 66 [default = 46];
   */
  defaultSint64: bigint;

  /**
   * @generated from field: fixed32 default_fixed32 = 67 [default = 47];
   */
  defaultFixed32: number;

  /**
   * @generated from field: fixed64 default_fixed64 = 68 [default = 48];
   */
  defaultFixed64: bigint;

  /**
   * @generated from field: sfixed32 default_sfixed32 = 69 [default = 49];
   */
  defaultSfixed32: number;

  /**
   * @generated from field: sfixed64 default_sfixed64 = 70 [default = -50];
   */
  defaultSfixed64: bigint;

  /**
   * @generated from field: float default_float = 71 [default = 51.5];
   */
  defaultFloat: number;

  /**
   * @generated from field: double default_double = 72 [default = 52000];
   */
  defaultDouble: number;

  /**
   * @generated from field: bool default_bool = 73 [default = true];
   */
  defaultBool: boolean;

  /**
   * @generated from field: string default_string = 74 [default = "hello"];
   */
  defaultString: string;

  /**
   * @generated from field: bytes default_bytes = 75 [default = "world"];
   */
  defaultBytes: Uint8Array;

  /**
   * @generated from field: proto2_unittest.TestAllTypes.NestedEnum default_nested_enum = 81 [default = BAR];
   */
  defaultNestedEnum: TestAllTypes_NestedEnum;

  /**
   * @generated from field: proto2_unittest.ForeignEnum default_foreign_enum = 82 [default = FOREIGN_BAR];
   */
  defaultForeignEnum: ForeignEnum;

  /**
   * @generated from field: proto2_unittest_import.ImportEnum default_import_enum = 83 [default = IMPORT_BAR];
   */
  defaultImportEnum: ImportEnum;

  /**
   * @generated from field: string default_string_piece = 84 [default = "abc"];
   */
  defaultStringPiece: string;

  /**
   * @generated from field: string default_cord = 85 [default = "123"];
   */
  defaultCord: string;

  /**
   * For oneof test
   *
   * @generated from oneof proto2_unittest.TestAllTypes.oneof_field
   */
  oneofField: {
    /**
     * @generated from field: uint32 oneof_uint32 = 111;
     */
    value: number;
    case: "oneofUint32";
  } | {
    /**
     * @generated from field: proto2_unittest.TestAllTypes.NestedMessage oneof_nested_message = 112;
     */
    value: TestAllTypes_NestedMessage;
    case: "oneofNestedMessage";
  } | {
    /**
     * @generated from field: string oneof_string = 113;
     */
    value: string;
    case: "oneofString";
  } | {
    /**
     * @generated from field: bytes oneof_bytes = 114;
     */
    value: Uint8Array;
    case: "oneofBytes";
  } | {
    /**
     * @generated from field: string oneof_cord = 115;
     */
    value: string;
    case: "oneofCord";
  } | {
    /**
     * @generated from field: string oneof_string_piece = 116;
     */
    value: string;
    case: "oneofStringPiece";
  } | {
    /**
     * @generated from field: proto2_unittest.TestAllTypes.NestedMessage oneof_lazy_nested_message = 117;
     */
    value: TestAllTypes_NestedMessage;
    case: "oneofLazyNestedMessage";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto2_unittest.TestAllTypes.
 * Use `create(TestAllTypesSchema)` to create a new message.
 */
export const TestAllTypesSchema: GenMessage<TestAllTypes> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 0);

/**
 * @generated from message proto2_unittest.TestAllTypes.NestedMessage
 */
export type TestAllTypes_NestedMessage = Message<"proto2_unittest.TestAllTypes.NestedMessage"> & {
  /**
   * The field name "b" fails to compile in proto1 because it conflicts with
   * a local variable named "b" in one of the generated methods.  Doh.
   * This file needs to compile in proto1 to test backwards-compatibility.
   *
   * @generated from field: int32 bb = 1;
   */
  bb: number;
};

/**
 * Describes the message proto2_unittest.TestAllTypes.NestedMessage.
 * Use `create(TestAllTypes_NestedMessageSchema)` to create a new message.
 */
export const TestAllTypes_NestedMessageSchema: GenMessage<TestAllTypes_NestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 0, 0);

/**
 * @generated from message proto2_unittest.TestAllTypes.OptionalGroup
 */
export type TestAllTypes_OptionalGroup = Message<"proto2_unittest.TestAllTypes.OptionalGroup"> & {
  /**
   * @generated from field: int32 a = 17;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestAllTypes.OptionalGroup.
 * Use `create(TestAllTypes_OptionalGroupSchema)` to create a new message.
 */
export const TestAllTypes_OptionalGroupSchema: GenMessage<TestAllTypes_OptionalGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 0, 1);

/**
 * @generated from message proto2_unittest.TestAllTypes.RepeatedGroup
 */
export type TestAllTypes_RepeatedGroup = Message<"proto2_unittest.TestAllTypes.RepeatedGroup"> & {
  /**
   * @generated from field: int32 a = 47;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestAllTypes.RepeatedGroup.
 * Use `create(TestAllTypes_RepeatedGroupSchema)` to create a new message.
 */
export const TestAllTypes_RepeatedGroupSchema: GenMessage<TestAllTypes_RepeatedGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 0, 2);

/**
 * @generated from enum proto2_unittest.TestAllTypes.NestedEnum
 */
export enum TestAllTypes_NestedEnum {
  /**
   * @generated from enum value: FOO = 1;
   */
  FOO = 1,

  /**
   * @generated from enum value: BAR = 2;
   */
  BAR = 2,

  /**
   * @generated from enum value: BAZ = 3;
   */
  BAZ = 3,

  /**
   * Intentionally negative.
   *
   * @generated from enum value: NEG = -1;
   */
  NEG = -1,
}

/**
 * Describes the enum proto2_unittest.TestAllTypes.NestedEnum.
 */
export const TestAllTypes_NestedEnumSchema: GenEnum<TestAllTypes_NestedEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 0, 0);

/**
 * This proto includes a recursively nested message.
 *
 * @generated from message proto2_unittest.NestedTestAllTypes
 */
export type NestedTestAllTypes = Message<"proto2_unittest.NestedTestAllTypes"> & {
  /**
   * @generated from field: proto2_unittest.NestedTestAllTypes child = 1;
   */
  child?: NestedTestAllTypes;

  /**
   * @generated from field: proto2_unittest.TestAllTypes payload = 2;
   */
  payload?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.NestedTestAllTypes repeated_child = 3;
   */
  repeatedChild: NestedTestAllTypes[];

  /**
   * @generated from field: proto2_unittest.NestedTestAllTypes lazy_child = 4;
   */
  lazyChild?: NestedTestAllTypes;

  /**
   * @generated from field: proto2_unittest.TestAllTypes eager_child = 5;
   */
  eagerChild?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.NestedTestAllTypes.
 * Use `create(NestedTestAllTypesSchema)` to create a new message.
 */
export const NestedTestAllTypesSchema: GenMessage<NestedTestAllTypes> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 1);

/**
 * @generated from message proto2_unittest.TestDeprecatedFields
 */
export type TestDeprecatedFields = Message<"proto2_unittest.TestDeprecatedFields"> & {
  /**
   * @generated from field: int32 deprecated_int32 = 1 [deprecated = true];
   * @deprecated
   */
  deprecatedInt32: number;

  /**
   * @generated from field: repeated string deprecated_repeated_string = 4 [deprecated = true];
   * @deprecated
   */
  deprecatedRepeatedString: string[];

  /**
   * @generated from field: proto2_unittest.TestAllTypes.NestedMessage deprecated_message = 3 [deprecated = true];
   * @deprecated
   */
  deprecatedMessage?: TestAllTypes_NestedMessage;

  /**
   * @generated from oneof proto2_unittest.TestDeprecatedFields.oneof_fields
   */
  oneofFields: {
    /**
     * @generated from field: int32 deprecated_int32_in_oneof = 2 [deprecated = true];
     * @deprecated
     */
    value: number;
    case: "deprecatedInt32InOneof";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from field: proto2_unittest.TestDeprecatedFields nested = 5;
   */
  nested?: TestDeprecatedFields;
};

/**
 * Describes the message proto2_unittest.TestDeprecatedFields.
 * Use `create(TestDeprecatedFieldsSchema)` to create a new message.
 */
export const TestDeprecatedFieldsSchema: GenMessage<TestDeprecatedFields> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 2);

/**
 * @generated from message proto2_unittest.TestDeprecatedMessage
 * @deprecated
 */
export type TestDeprecatedMessage = Message<"proto2_unittest.TestDeprecatedMessage"> & {
};

/**
 * Describes the message proto2_unittest.TestDeprecatedMessage.
 * Use `create(TestDeprecatedMessageSchema)` to create a new message.
 * @deprecated
 */
export const TestDeprecatedMessageSchema: GenMessage<TestDeprecatedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 3);

/**
 * Define these after TestAllTypes to make sure the compiler can handle
 * that.
 *
 * @generated from message proto2_unittest.ForeignMessage
 */
export type ForeignMessage = Message<"proto2_unittest.ForeignMessage"> & {
  /**
   * @generated from field: int32 c = 1;
   */
  c: number;

  /**
   * @generated from field: int32 d = 2;
   */
  d: number;
};

/**
 * Describes the message proto2_unittest.ForeignMessage.
 * Use `create(ForeignMessageSchema)` to create a new message.
 */
export const ForeignMessageSchema: GenMessage<ForeignMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 4);

/**
 * @generated from message proto2_unittest.TestReservedFields
 */
export type TestReservedFields = Message<"proto2_unittest.TestReservedFields"> & {
};

/**
 * Describes the message proto2_unittest.TestReservedFields.
 * Use `create(TestReservedFieldsSchema)` to create a new message.
 */
export const TestReservedFieldsSchema: GenMessage<TestReservedFields> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 5);

/**
 * @generated from message proto2_unittest.TestAllExtensions
 */
export type TestAllExtensions = Message<"proto2_unittest.TestAllExtensions"> & {
};

/**
 * Describes the message proto2_unittest.TestAllExtensions.
 * Use `create(TestAllExtensionsSchema)` to create a new message.
 */
export const TestAllExtensionsSchema: GenMessage<TestAllExtensions> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 6);

/**
 * @generated from message proto2_unittest.OptionalGroup_extension
 */
export type OptionalGroup_extension = Message<"proto2_unittest.OptionalGroup_extension"> & {
  /**
   * @generated from field: int32 a = 17;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.OptionalGroup_extension.
 * Use `create(OptionalGroup_extensionSchema)` to create a new message.
 */
export const OptionalGroup_extensionSchema: GenMessage<OptionalGroup_extension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 7);

/**
 * @generated from message proto2_unittest.RepeatedGroup_extension
 */
export type RepeatedGroup_extension = Message<"proto2_unittest.RepeatedGroup_extension"> & {
  /**
   * @generated from field: int32 a = 47;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.RepeatedGroup_extension.
 * Use `create(RepeatedGroup_extensionSchema)` to create a new message.
 */
export const RepeatedGroup_extensionSchema: GenMessage<RepeatedGroup_extension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 8);

/**
 * @generated from message proto2_unittest.TestMixedFieldsAndExtensions
 */
export type TestMixedFieldsAndExtensions = Message<"proto2_unittest.TestMixedFieldsAndExtensions"> & {
  /**
   * @generated from field: int32 a = 1;
   */
  a: number;

  /**
   * @generated from field: repeated fixed32 b = 3;
   */
  b: number[];
};

/**
 * Describes the message proto2_unittest.TestMixedFieldsAndExtensions.
 * Use `create(TestMixedFieldsAndExtensionsSchema)` to create a new message.
 */
export const TestMixedFieldsAndExtensionsSchema: GenMessage<TestMixedFieldsAndExtensions> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 9);

/**
 * @generated from extension: int32 c = 2;
 */
export const TestMixedFieldsAndExtensions_c: GenExtension<TestMixedFieldsAndExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 9, 0);

/**
 * @generated from extension: repeated fixed32 d = 4;
 */
export const TestMixedFieldsAndExtensions_d: GenExtension<TestMixedFieldsAndExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 9, 1);

/**
 * @generated from message proto2_unittest.TestGroup
 */
export type TestGroup = Message<"proto2_unittest.TestGroup"> & {
  /**
   * @generated from field: proto2_unittest.TestGroup.OptionalGroup optionalgroup = 16 [features.message_encoding = DELIMITED];
   */
  optionalgroup?: TestGroup_OptionalGroup;

  /**
   * @generated from field: proto2_unittest.ForeignEnum optional_foreign_enum = 22;
   */
  optionalForeignEnum: ForeignEnum;
};

/**
 * Describes the message proto2_unittest.TestGroup.
 * Use `create(TestGroupSchema)` to create a new message.
 */
export const TestGroupSchema: GenMessage<TestGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 10);

/**
 * @generated from message proto2_unittest.TestGroup.OptionalGroup
 */
export type TestGroup_OptionalGroup = Message<"proto2_unittest.TestGroup.OptionalGroup"> & {
  /**
   * @generated from field: int32 a = 17;
   */
  a: number;

  /**
   * fast table size must be at least 16, for this
   *
   * @generated from field: int32 zz = 89;
   */
  zz: number;
};

/**
 * Describes the message proto2_unittest.TestGroup.OptionalGroup.
 * Use `create(TestGroup_OptionalGroupSchema)` to create a new message.
 */
export const TestGroup_OptionalGroupSchema: GenMessage<TestGroup_OptionalGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 10, 0);

/**
 * @generated from message proto2_unittest.TestGroupExtension
 */
export type TestGroupExtension = Message<"proto2_unittest.TestGroupExtension"> & {
};

/**
 * Describes the message proto2_unittest.TestGroupExtension.
 * Use `create(TestGroupExtensionSchema)` to create a new message.
 */
export const TestGroupExtensionSchema: GenMessage<TestGroupExtension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 11);

/**
 * @generated from message proto2_unittest.TestNestedExtension
 */
export type TestNestedExtension = Message<"proto2_unittest.TestNestedExtension"> & {
};

/**
 * Describes the message proto2_unittest.TestNestedExtension.
 * Use `create(TestNestedExtensionSchema)` to create a new message.
 */
export const TestNestedExtensionSchema: GenMessage<TestNestedExtension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 12);

/**
 * @generated from message proto2_unittest.TestNestedExtension.OptionalGroup_extension
 */
export type TestNestedExtension_OptionalGroup_extension = Message<"proto2_unittest.TestNestedExtension.OptionalGroup_extension"> & {
  /**
   * @generated from field: int32 a = 17;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestNestedExtension.OptionalGroup_extension.
 * Use `create(TestNestedExtension_OptionalGroup_extensionSchema)` to create a new message.
 */
export const TestNestedExtension_OptionalGroup_extensionSchema: GenMessage<TestNestedExtension_OptionalGroup_extension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 12, 0);

/**
 * Check for bug where string extensions declared in tested scope did not
 * compile.
 *
 * @generated from extension: string test = 1002 [default = "test"];
 */
export const TestNestedExtension_test: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 12, 0);

/**
 * Used to test if generated extension name is correct when there are
 * underscores.
 *
 * @generated from extension: string nested_string_extension = 1003;
 */
export const TestNestedExtension_nested_string_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 12, 1);

/**
 * @generated from extension: proto2_unittest.TestNestedExtension.OptionalGroup_extension optionalgroup_extension = 16 [features.message_encoding = DELIMITED];
 */
export const TestNestedExtension_optionalgroup_extension: GenExtension<TestGroupExtension, TestNestedExtension_OptionalGroup_extension> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 12, 2);

/**
 * @generated from extension: proto2_unittest.ForeignEnum optional_foreign_enum_extension = 22;
 */
export const TestNestedExtension_optional_foreign_enum_extension: GenExtension<TestGroupExtension, ForeignEnum> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 12, 3);

/**
 * @generated from message proto2_unittest.TestChildExtension
 */
export type TestChildExtension = Message<"proto2_unittest.TestChildExtension"> & {
  /**
   * @generated from field: string a = 1;
   */
  a: string;

  /**
   * @generated from field: string b = 2;
   */
  b: string;

  /**
   * @generated from field: proto2_unittest.TestAllExtensions optional_extension = 3;
   */
  optionalExtension?: TestAllExtensions;
};

/**
 * Describes the message proto2_unittest.TestChildExtension.
 * Use `create(TestChildExtensionSchema)` to create a new message.
 */
export const TestChildExtensionSchema: GenMessage<TestChildExtension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 13);

/**
 * Emulates wireformat data of TestChildExtension with dynamic extension
 * (DynamicExtension).
 *
 * @generated from message proto2_unittest.TestChildExtensionData
 */
export type TestChildExtensionData = Message<"proto2_unittest.TestChildExtensionData"> & {
  /**
   * @generated from field: string a = 1;
   */
  a: string;

  /**
   * @generated from field: string b = 2;
   */
  b: string;

  /**
   * @generated from field: proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData optional_extension = 3;
   */
  optionalExtension?: TestChildExtensionData_NestedTestAllExtensionsData;
};

/**
 * Describes the message proto2_unittest.TestChildExtensionData.
 * Use `create(TestChildExtensionDataSchema)` to create a new message.
 */
export const TestChildExtensionDataSchema: GenMessage<TestChildExtensionData> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 14);

/**
 * @generated from message proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData
 */
export type TestChildExtensionData_NestedTestAllExtensionsData = Message<"proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData"> & {
  /**
   * @generated from field: proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData.NestedDynamicExtensions dynamic = 409707008;
   */
  dynamic?: TestChildExtensionData_NestedTestAllExtensionsData_NestedDynamicExtensions;
};

/**
 * Describes the message proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData.
 * Use `create(TestChildExtensionData_NestedTestAllExtensionsDataSchema)` to create a new message.
 */
export const TestChildExtensionData_NestedTestAllExtensionsDataSchema: GenMessage<TestChildExtensionData_NestedTestAllExtensionsData> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 14, 0);

/**
 * @generated from message proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData.NestedDynamicExtensions
 */
export type TestChildExtensionData_NestedTestAllExtensionsData_NestedDynamicExtensions = Message<"proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData.NestedDynamicExtensions"> & {
  /**
   * @generated from field: int32 a = 1;
   */
  a: number;

  /**
   * @generated from field: int32 b = 2;
   */
  b: number;
};

/**
 * Describes the message proto2_unittest.TestChildExtensionData.NestedTestAllExtensionsData.NestedDynamicExtensions.
 * Use `create(TestChildExtensionData_NestedTestAllExtensionsData_NestedDynamicExtensionsSchema)` to create a new message.
 */
export const TestChildExtensionData_NestedTestAllExtensionsData_NestedDynamicExtensionsSchema: GenMessage<TestChildExtensionData_NestedTestAllExtensionsData_NestedDynamicExtensions> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 14, 0, 0);

/**
 * @generated from message proto2_unittest.TestNestedChildExtension
 */
export type TestNestedChildExtension = Message<"proto2_unittest.TestNestedChildExtension"> & {
  /**
   * @generated from field: int32 a = 1;
   */
  a: number;

  /**
   * @generated from field: proto2_unittest.TestChildExtension child = 2;
   */
  child?: TestChildExtension;
};

/**
 * Describes the message proto2_unittest.TestNestedChildExtension.
 * Use `create(TestNestedChildExtensionSchema)` to create a new message.
 */
export const TestNestedChildExtensionSchema: GenMessage<TestNestedChildExtension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 15);

/**
 * Emulates wireformat data of TestNestedChildExtension with dynamic extension
 * (DynamicExtension).
 *
 * @generated from message proto2_unittest.TestNestedChildExtensionData
 */
export type TestNestedChildExtensionData = Message<"proto2_unittest.TestNestedChildExtensionData"> & {
  /**
   * @generated from field: int32 a = 1;
   */
  a: number;

  /**
   * @generated from field: proto2_unittest.TestChildExtensionData child = 2;
   */
  child?: TestChildExtensionData;
};

/**
 * Describes the message proto2_unittest.TestNestedChildExtensionData.
 * Use `create(TestNestedChildExtensionDataSchema)` to create a new message.
 */
export const TestNestedChildExtensionDataSchema: GenMessage<TestNestedChildExtensionData> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 16);

/**
 * Required and closed enum fields are considered unknown fields if the value is
 * not valid. We need to make sure it functions as expected.
 *
 * @generated from message proto2_unittest.TestRequiredEnum
 */
export type TestRequiredEnum = Message<"proto2_unittest.TestRequiredEnum"> & {
  /**
   * @generated from field: proto2_unittest.ForeignEnum required_enum = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum: ForeignEnum;

  /**
   * A dummy optional field.
   *
   * @generated from field: int32 a = 2;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestRequiredEnum.
 * Use `create(TestRequiredEnumSchema)` to create a new message.
 */
export const TestRequiredEnumSchema: GenMessage<TestRequiredEnum> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 17);

/**
 * @generated from message proto2_unittest.TestRequiredOpenEnum
 */
export type TestRequiredOpenEnum = Message<"proto2_unittest.TestRequiredOpenEnum"> & {
  /**
   * @generated from field: proto2_unittest.ForeignOpenEnum required_enum = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum: ForeignOpenEnum;

  /**
   * A dummy optional field.
   *
   * @generated from field: int32 a = 2;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestRequiredOpenEnum.
 * Use `create(TestRequiredOpenEnumSchema)` to create a new message.
 */
export const TestRequiredOpenEnumSchema: GenMessage<TestRequiredOpenEnum> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 18);

/**
 * TestRequiredEnum + using enum values that won't fit to 64 bitmask.
 *
 * @generated from message proto2_unittest.TestRequiredEnumNoMask
 */
export type TestRequiredEnumNoMask = Message<"proto2_unittest.TestRequiredEnumNoMask"> & {
  /**
   * @generated from field: proto2_unittest.TestRequiredEnumNoMask.NestedEnum required_enum = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum: TestRequiredEnumNoMask_NestedEnum;

  /**
   * A dummy optional field.
   *
   * @generated from field: int32 a = 2;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestRequiredEnumNoMask.
 * Use `create(TestRequiredEnumNoMaskSchema)` to create a new message.
 */
export const TestRequiredEnumNoMaskSchema: GenMessage<TestRequiredEnumNoMask> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 19);

/**
 * @generated from enum proto2_unittest.TestRequiredEnumNoMask.NestedEnum
 */
export enum TestRequiredEnumNoMask_NestedEnum {
  /**
   * @generated from enum value: UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: FOO = 2;
   */
  FOO = 2,

  /**
   * @generated from enum value: BAR = 100;
   */
  BAR = 100,

  /**
   * Intentionally negative.
   *
   * @generated from enum value: BAZ = -1;
   */
  BAZ = -1,
}

/**
 * Describes the enum proto2_unittest.TestRequiredEnumNoMask.NestedEnum.
 */
export const TestRequiredEnumNoMask_NestedEnumSchema: GenEnum<TestRequiredEnumNoMask_NestedEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 19, 0);

/**
 * @generated from message proto2_unittest.TestRequiredEnumMulti
 */
export type TestRequiredEnumMulti = Message<"proto2_unittest.TestRequiredEnumMulti"> & {
  /**
   * Intentionally placed in descending field number to force sorting in closed
   * enum verification.
   *
   * @generated from field: proto2_unittest.TestRequiredEnumMulti.NestedEnum required_enum_4 = 4 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum4: TestRequiredEnumMulti_NestedEnum;

  /**
   * @generated from field: int32 a_3 = 3;
   */
  a3: number;

  /**
   * @generated from field: proto2_unittest.TestRequiredEnumMulti.NestedEnum required_enum_2 = 2 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum2: TestRequiredEnumMulti_NestedEnum;

  /**
   * @generated from field: proto2_unittest.ForeignEnum required_enum_1 = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum1: ForeignEnum;
};

/**
 * Describes the message proto2_unittest.TestRequiredEnumMulti.
 * Use `create(TestRequiredEnumMultiSchema)` to create a new message.
 */
export const TestRequiredEnumMultiSchema: GenMessage<TestRequiredEnumMulti> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 20);

/**
 * @generated from enum proto2_unittest.TestRequiredEnumMulti.NestedEnum
 */
export enum TestRequiredEnumMulti_NestedEnum {
  /**
   * @generated from enum value: UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: FOO = 1;
   */
  FOO = 1,

  /**
   * @generated from enum value: BAR = 2;
   */
  BAR = 2,

  /**
   * @generated from enum value: BAZ = 100;
   */
  BAZ = 100,
}

/**
 * Describes the enum proto2_unittest.TestRequiredEnumMulti.NestedEnum.
 */
export const TestRequiredEnumMulti_NestedEnumSchema: GenEnum<TestRequiredEnumMulti_NestedEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 20, 0);

/**
 * @generated from message proto2_unittest.TestRequiredNoMaskMulti
 */
export type TestRequiredNoMaskMulti = Message<"proto2_unittest.TestRequiredNoMaskMulti"> & {
  /**
   * Intentionally placed in descending field number to force sorting in closed
   * enum verification. Also, using large field numbers to use tag only
   * matching for required fields.
   *
   * @generated from field: fixed32 required_fixed32_80 = 80 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredFixed3280: number;

  /**
   * @generated from field: fixed32 required_fixed32_70 = 70 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredFixed3270: number;

  /**
   * @generated from field: proto2_unittest.TestRequiredNoMaskMulti.NestedEnum required_enum_64 = 64 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum64: TestRequiredNoMaskMulti_NestedEnum;

  /**
   * @generated from field: proto2_unittest.TestRequiredNoMaskMulti.NestedEnum required_enum_4 = 4 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum4: TestRequiredNoMaskMulti_NestedEnum;

  /**
   * @generated from field: int32 a_3 = 3;
   */
  a3: number;

  /**
   * @generated from field: proto2_unittest.TestRequiredNoMaskMulti.NestedEnum required_enum_2 = 2 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum2: TestRequiredNoMaskMulti_NestedEnum;

  /**
   * @generated from field: proto2_unittest.ForeignEnum required_enum_1 = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnum1: ForeignEnum;
};

/**
 * Describes the message proto2_unittest.TestRequiredNoMaskMulti.
 * Use `create(TestRequiredNoMaskMultiSchema)` to create a new message.
 */
export const TestRequiredNoMaskMultiSchema: GenMessage<TestRequiredNoMaskMulti> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 21);

/**
 * @generated from enum proto2_unittest.TestRequiredNoMaskMulti.NestedEnum
 */
export enum TestRequiredNoMaskMulti_NestedEnum {
  /**
   * @generated from enum value: UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: FOO = 1;
   */
  FOO = 1,

  /**
   * @generated from enum value: BAR = 2;
   */
  BAR = 2,

  /**
   * @generated from enum value: BAZ = 100;
   */
  BAZ = 100,
}

/**
 * Describes the enum proto2_unittest.TestRequiredNoMaskMulti.NestedEnum.
 */
export const TestRequiredNoMaskMulti_NestedEnumSchema: GenEnum<TestRequiredNoMaskMulti_NestedEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 21, 0);

/**
 * We have separate messages for testing required fields because it's
 * annoying to have to fill in required fields in TestProto in order to
 * do anything with it.  Note that we don't need to test every type of
 * required filed because the code output is basically identical to
 * optional fields for all types.
 *
 * @generated from message proto2_unittest.TestRequired
 */
export type TestRequired = Message<"proto2_unittest.TestRequired"> & {
  /**
   * @generated from field: int32 a = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  a: number;

  /**
   * @generated from field: int32 dummy2 = 2;
   */
  dummy2: number;

  /**
   * @generated from field: int32 b = 3 [features.field_presence = LEGACY_REQUIRED];
   */
  b: number;

  /**
   * Pad the field count to 32 so that we can test that IsInitialized()
   * properly checks multiple elements of has_bits_.
   *
   * @generated from field: int32 dummy4 = 4;
   */
  dummy4: number;

  /**
   * @generated from field: int32 dummy5 = 5;
   */
  dummy5: number;

  /**
   * @generated from field: int32 dummy6 = 6;
   */
  dummy6: number;

  /**
   * @generated from field: int32 dummy7 = 7;
   */
  dummy7: number;

  /**
   * @generated from field: int32 dummy8 = 8;
   */
  dummy8: number;

  /**
   * @generated from field: int32 dummy9 = 9;
   */
  dummy9: number;

  /**
   * @generated from field: int32 dummy10 = 10;
   */
  dummy10: number;

  /**
   * @generated from field: int32 dummy11 = 11;
   */
  dummy11: number;

  /**
   * @generated from field: int32 dummy12 = 12;
   */
  dummy12: number;

  /**
   * @generated from field: int32 dummy13 = 13;
   */
  dummy13: number;

  /**
   * @generated from field: int32 dummy14 = 14;
   */
  dummy14: number;

  /**
   * @generated from field: int32 dummy15 = 15;
   */
  dummy15: number;

  /**
   * @generated from field: int32 dummy16 = 16;
   */
  dummy16: number;

  /**
   * @generated from field: int32 dummy17 = 17;
   */
  dummy17: number;

  /**
   * @generated from field: int32 dummy18 = 18;
   */
  dummy18: number;

  /**
   * @generated from field: int32 dummy19 = 19;
   */
  dummy19: number;

  /**
   * @generated from field: int32 dummy20 = 20;
   */
  dummy20: number;

  /**
   * @generated from field: int32 dummy21 = 21;
   */
  dummy21: number;

  /**
   * @generated from field: int32 dummy22 = 22;
   */
  dummy22: number;

  /**
   * @generated from field: int32 dummy23 = 23;
   */
  dummy23: number;

  /**
   * @generated from field: int32 dummy24 = 24;
   */
  dummy24: number;

  /**
   * @generated from field: int32 dummy25 = 25;
   */
  dummy25: number;

  /**
   * @generated from field: int32 dummy26 = 26;
   */
  dummy26: number;

  /**
   * @generated from field: int32 dummy27 = 27;
   */
  dummy27: number;

  /**
   * @generated from field: int32 dummy28 = 28;
   */
  dummy28: number;

  /**
   * @generated from field: int32 dummy29 = 29;
   */
  dummy29: number;

  /**
   * @generated from field: int32 dummy30 = 30;
   */
  dummy30: number;

  /**
   * @generated from field: int32 dummy31 = 31;
   */
  dummy31: number;

  /**
   * @generated from field: int32 dummy32 = 32;
   */
  dummy32: number;

  /**
   * @generated from field: int32 c = 33 [features.field_presence = LEGACY_REQUIRED];
   */
  c: number;

  /**
   * Add an optional child message to make this non-trivial for go/pdlazy.
   *
   * @generated from field: proto2_unittest.ForeignMessage optional_foreign = 34;
   */
  optionalForeign?: ForeignMessage;

  /**
   * @generated from field: map<string, proto2_unittest.TestRequired> map_field = 35;
   */
  mapField: { [key: string]: TestRequired };
};

/**
 * Describes the message proto2_unittest.TestRequired.
 * Use `create(TestRequiredSchema)` to create a new message.
 */
export const TestRequiredSchema: GenMessage<TestRequired> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 22);

/**
 * @generated from extension: proto2_unittest.TestRequired single = 1000;
 */
export const TestRequired_single: GenExtension<TestAllExtensions, TestRequired> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 22, 0);

/**
 * @generated from extension: repeated proto2_unittest.TestRequired multi = 1001;
 */
export const TestRequired_multi: GenExtension<TestAllExtensions, TestRequired[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 22, 1);

/**
 * @generated from message proto2_unittest.TestRequiredForeign
 */
export type TestRequiredForeign = Message<"proto2_unittest.TestRequiredForeign"> & {
  /**
   * @generated from field: proto2_unittest.TestRequired optional_message = 1;
   */
  optionalMessage?: TestRequired;

  /**
   * @generated from field: repeated proto2_unittest.TestRequired repeated_message = 2;
   */
  repeatedMessage: TestRequired[];

  /**
   * @generated from field: int32 dummy = 3;
   */
  dummy: number;

  /**
   * Missing required fields must not affect verification of child messages.
   *
   * @generated from field: proto2_unittest.NestedTestAllTypes optional_lazy_message = 4;
   */
  optionalLazyMessage?: NestedTestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestRequiredForeign.
 * Use `create(TestRequiredForeignSchema)` to create a new message.
 */
export const TestRequiredForeignSchema: GenMessage<TestRequiredForeign> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 23);

/**
 * @generated from message proto2_unittest.TestRequiredMessage
 */
export type TestRequiredMessage = Message<"proto2_unittest.TestRequiredMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestRequired optional_message = 1;
   */
  optionalMessage?: TestRequired;

  /**
   * @generated from field: repeated proto2_unittest.TestRequired repeated_message = 2;
   */
  repeatedMessage: TestRequired[];

  /**
   * @generated from field: proto2_unittest.TestRequired required_message = 3 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredMessage?: TestRequired;
};

/**
 * Describes the message proto2_unittest.TestRequiredMessage.
 * Use `create(TestRequiredMessageSchema)` to create a new message.
 */
export const TestRequiredMessageSchema: GenMessage<TestRequiredMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 24);

/**
 * @generated from message proto2_unittest.TestRequiredLazyMessage
 */
export type TestRequiredLazyMessage = Message<"proto2_unittest.TestRequiredLazyMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestRequired child = 1;
   */
  child?: TestRequired;

  /**
   * @generated from field: proto2_unittest.TestRequiredLazyMessage recurse = 2;
   */
  recurse?: TestRequiredLazyMessage;
};

/**
 * Describes the message proto2_unittest.TestRequiredLazyMessage.
 * Use `create(TestRequiredLazyMessageSchema)` to create a new message.
 */
export const TestRequiredLazyMessageSchema: GenMessage<TestRequiredLazyMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 25);

/**
 * @generated from message proto2_unittest.TestNestedRequiredForeign
 */
export type TestNestedRequiredForeign = Message<"proto2_unittest.TestNestedRequiredForeign"> & {
  /**
   * @generated from field: proto2_unittest.TestNestedRequiredForeign child = 1;
   */
  child?: TestNestedRequiredForeign;

  /**
   * @generated from field: proto2_unittest.TestRequiredForeign payload = 2;
   */
  payload?: TestRequiredForeign;

  /**
   * @generated from field: int32 dummy = 3;
   */
  dummy: number;

  /**
   * optional message to test required closed enum.
   *
   * @generated from field: proto2_unittest.TestRequiredEnum required_enum = 5;
   */
  requiredEnum?: TestRequiredEnum;

  /**
   * @generated from field: proto2_unittest.TestRequiredEnumNoMask required_enum_no_mask = 6;
   */
  requiredEnumNoMask?: TestRequiredEnumNoMask;

  /**
   * @generated from field: proto2_unittest.TestRequiredEnumMulti required_enum_multi = 7;
   */
  requiredEnumMulti?: TestRequiredEnumMulti;

  /**
   * @generated from field: proto2_unittest.TestRequiredNoMaskMulti required_no_mask = 9;
   */
  requiredNoMask?: TestRequiredNoMaskMulti;
};

/**
 * Describes the message proto2_unittest.TestNestedRequiredForeign.
 * Use `create(TestNestedRequiredForeignSchema)` to create a new message.
 */
export const TestNestedRequiredForeignSchema: GenMessage<TestNestedRequiredForeign> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 26);

/**
 * Test that we can use NestedMessage from outside TestAllTypes.
 *
 * @generated from message proto2_unittest.TestForeignNested
 */
export type TestForeignNested = Message<"proto2_unittest.TestForeignNested"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes.NestedMessage foreign_nested = 1;
   */
  foreignNested?: TestAllTypes_NestedMessage;
};

/**
 * Describes the message proto2_unittest.TestForeignNested.
 * Use `create(TestForeignNestedSchema)` to create a new message.
 */
export const TestForeignNestedSchema: GenMessage<TestForeignNested> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 27);

/**
 * TestEmptyMessage is used to test unknown field support.
 *
 * @generated from message proto2_unittest.TestEmptyMessage
 */
export type TestEmptyMessage = Message<"proto2_unittest.TestEmptyMessage"> & {
};

/**
 * Describes the message proto2_unittest.TestEmptyMessage.
 * Use `create(TestEmptyMessageSchema)` to create a new message.
 */
export const TestEmptyMessageSchema: GenMessage<TestEmptyMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 28);

/**
 * Like above, but declare all field numbers as potential extensions.  No
 * actual extensions should ever be defined for this type.
 *
 * @generated from message proto2_unittest.TestEmptyMessageWithExtensions
 */
export type TestEmptyMessageWithExtensions = Message<"proto2_unittest.TestEmptyMessageWithExtensions"> & {
};

/**
 * Describes the message proto2_unittest.TestEmptyMessageWithExtensions.
 * Use `create(TestEmptyMessageWithExtensionsSchema)` to create a new message.
 */
export const TestEmptyMessageWithExtensionsSchema: GenMessage<TestEmptyMessageWithExtensions> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 29);

/**
 * Needed for a Python test.
 *
 * @generated from message proto2_unittest.TestPickleNestedMessage
 */
export type TestPickleNestedMessage = Message<"proto2_unittest.TestPickleNestedMessage"> & {
};

/**
 * Describes the message proto2_unittest.TestPickleNestedMessage.
 * Use `create(TestPickleNestedMessageSchema)` to create a new message.
 */
export const TestPickleNestedMessageSchema: GenMessage<TestPickleNestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 30);

/**
 * @generated from message proto2_unittest.TestPickleNestedMessage.NestedMessage
 */
export type TestPickleNestedMessage_NestedMessage = Message<"proto2_unittest.TestPickleNestedMessage.NestedMessage"> & {
  /**
   * @generated from field: int32 bb = 1;
   */
  bb: number;
};

/**
 * Describes the message proto2_unittest.TestPickleNestedMessage.NestedMessage.
 * Use `create(TestPickleNestedMessage_NestedMessageSchema)` to create a new message.
 */
export const TestPickleNestedMessage_NestedMessageSchema: GenMessage<TestPickleNestedMessage_NestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 30, 0);

/**
 * @generated from message proto2_unittest.TestPickleNestedMessage.NestedMessage.NestedNestedMessage
 */
export type TestPickleNestedMessage_NestedMessage_NestedNestedMessage = Message<"proto2_unittest.TestPickleNestedMessage.NestedMessage.NestedNestedMessage"> & {
  /**
   * @generated from field: int32 cc = 1;
   */
  cc: number;
};

/**
 * Describes the message proto2_unittest.TestPickleNestedMessage.NestedMessage.NestedNestedMessage.
 * Use `create(TestPickleNestedMessage_NestedMessage_NestedNestedMessageSchema)` to create a new message.
 */
export const TestPickleNestedMessage_NestedMessage_NestedNestedMessageSchema: GenMessage<TestPickleNestedMessage_NestedMessage_NestedNestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 30, 0, 0);

/**
 * @generated from message proto2_unittest.TestMultipleExtensionRanges
 */
export type TestMultipleExtensionRanges = Message<"proto2_unittest.TestMultipleExtensionRanges"> & {
};

/**
 * Describes the message proto2_unittest.TestMultipleExtensionRanges.
 * Use `create(TestMultipleExtensionRangesSchema)` to create a new message.
 */
export const TestMultipleExtensionRangesSchema: GenMessage<TestMultipleExtensionRanges> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 31);

/**
 * Test that really large tag numbers don't break anything.
 *
 * @generated from message proto2_unittest.TestReallyLargeTagNumber
 */
export type TestReallyLargeTagNumber = Message<"proto2_unittest.TestReallyLargeTagNumber"> & {
  /**
   * The largest possible tag number is 2^28 - 1, since the wire format uses
   * three bits to communicate wire type.
   *
   * @generated from field: int32 a = 1;
   */
  a: number;

  /**
   * @generated from field: int32 bb = 268435455;
   */
  bb: number;
};

/**
 * Describes the message proto2_unittest.TestReallyLargeTagNumber.
 * Use `create(TestReallyLargeTagNumberSchema)` to create a new message.
 */
export const TestReallyLargeTagNumberSchema: GenMessage<TestReallyLargeTagNumber> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 32);

/**
 * @generated from message proto2_unittest.TestRecursiveMessage
 */
export type TestRecursiveMessage = Message<"proto2_unittest.TestRecursiveMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestRecursiveMessage a = 1;
   */
  a?: TestRecursiveMessage;

  /**
   * @generated from field: int32 i = 2;
   */
  i: number;
};

/**
 * Describes the message proto2_unittest.TestRecursiveMessage.
 * Use `create(TestRecursiveMessageSchema)` to create a new message.
 */
export const TestRecursiveMessageSchema: GenMessage<TestRecursiveMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 33);

/**
 * Test that mutual recursion works.
 *
 * @generated from message proto2_unittest.TestMutualRecursionA
 */
export type TestMutualRecursionA = Message<"proto2_unittest.TestMutualRecursionA"> & {
  /**
   * @generated from field: proto2_unittest.TestMutualRecursionB bb = 1;
   */
  bb?: TestMutualRecursionB;

  /**
   * @generated from field: proto2_unittest.TestMutualRecursionA.SubGroup subgroup = 2 [features.message_encoding = DELIMITED];
   */
  subgroup?: TestMutualRecursionA_SubGroup;

  /**
   * @generated from field: repeated proto2_unittest.TestMutualRecursionA.SubGroupR subgroupr = 5 [features.message_encoding = DELIMITED];
   */
  subgroupr: TestMutualRecursionA_SubGroupR[];
};

/**
 * Describes the message proto2_unittest.TestMutualRecursionA.
 * Use `create(TestMutualRecursionASchema)` to create a new message.
 */
export const TestMutualRecursionASchema: GenMessage<TestMutualRecursionA> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 34);

/**
 * @generated from message proto2_unittest.TestMutualRecursionA.SubMessage
 */
export type TestMutualRecursionA_SubMessage = Message<"proto2_unittest.TestMutualRecursionA.SubMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestMutualRecursionB b = 1;
   */
  b?: TestMutualRecursionB;
};

/**
 * Describes the message proto2_unittest.TestMutualRecursionA.SubMessage.
 * Use `create(TestMutualRecursionA_SubMessageSchema)` to create a new message.
 */
export const TestMutualRecursionA_SubMessageSchema: GenMessage<TestMutualRecursionA_SubMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 34, 0);

/**
 * @generated from message proto2_unittest.TestMutualRecursionA.SubGroup
 */
export type TestMutualRecursionA_SubGroup = Message<"proto2_unittest.TestMutualRecursionA.SubGroup"> & {
  /**
   * Needed because of bug in javatest
   *
   * @generated from field: proto2_unittest.TestMutualRecursionA.SubMessage sub_message = 3;
   */
  subMessage?: TestMutualRecursionA_SubMessage;

  /**
   * @generated from field: proto2_unittest.TestAllTypes not_in_this_scc = 4;
   */
  notInThisScc?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestMutualRecursionA.SubGroup.
 * Use `create(TestMutualRecursionA_SubGroupSchema)` to create a new message.
 */
export const TestMutualRecursionA_SubGroupSchema: GenMessage<TestMutualRecursionA_SubGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 34, 1);

/**
 * @generated from message proto2_unittest.TestMutualRecursionA.SubGroupR
 */
export type TestMutualRecursionA_SubGroupR = Message<"proto2_unittest.TestMutualRecursionA.SubGroupR"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes payload = 6;
   */
  payload?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestMutualRecursionA.SubGroupR.
 * Use `create(TestMutualRecursionA_SubGroupRSchema)` to create a new message.
 */
export const TestMutualRecursionA_SubGroupRSchema: GenMessage<TestMutualRecursionA_SubGroupR> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 34, 2);

/**
 * @generated from message proto2_unittest.TestMutualRecursionB
 */
export type TestMutualRecursionB = Message<"proto2_unittest.TestMutualRecursionB"> & {
  /**
   * @generated from field: proto2_unittest.TestMutualRecursionA a = 1;
   */
  a?: TestMutualRecursionA;

  /**
   * @generated from field: int32 optional_int32 = 2;
   */
  optionalInt32: number;
};

/**
 * Describes the message proto2_unittest.TestMutualRecursionB.
 * Use `create(TestMutualRecursionBSchema)` to create a new message.
 */
export const TestMutualRecursionBSchema: GenMessage<TestMutualRecursionB> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 35);

/**
 * @generated from message proto2_unittest.TestIsInitialized
 */
export type TestIsInitialized = Message<"proto2_unittest.TestIsInitialized"> & {
  /**
   * @generated from field: proto2_unittest.TestIsInitialized.SubMessage sub_message = 1;
   */
  subMessage?: TestIsInitialized_SubMessage;
};

/**
 * Describes the message proto2_unittest.TestIsInitialized.
 * Use `create(TestIsInitializedSchema)` to create a new message.
 */
export const TestIsInitializedSchema: GenMessage<TestIsInitialized> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 36);

/**
 * @generated from message proto2_unittest.TestIsInitialized.SubMessage
 */
export type TestIsInitialized_SubMessage = Message<"proto2_unittest.TestIsInitialized.SubMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestIsInitialized.SubMessage.SubGroup subgroup = 1 [features.message_encoding = DELIMITED];
   */
  subgroup?: TestIsInitialized_SubMessage_SubGroup;
};

/**
 * Describes the message proto2_unittest.TestIsInitialized.SubMessage.
 * Use `create(TestIsInitialized_SubMessageSchema)` to create a new message.
 */
export const TestIsInitialized_SubMessageSchema: GenMessage<TestIsInitialized_SubMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 36, 0);

/**
 * @generated from message proto2_unittest.TestIsInitialized.SubMessage.SubGroup
 */
export type TestIsInitialized_SubMessage_SubGroup = Message<"proto2_unittest.TestIsInitialized.SubMessage.SubGroup"> & {
  /**
   * @generated from field: int32 i = 2 [features.field_presence = LEGACY_REQUIRED];
   */
  i: number;
};

/**
 * Describes the message proto2_unittest.TestIsInitialized.SubMessage.SubGroup.
 * Use `create(TestIsInitialized_SubMessage_SubGroupSchema)` to create a new message.
 */
export const TestIsInitialized_SubMessage_SubGroupSchema: GenMessage<TestIsInitialized_SubMessage_SubGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 36, 0, 0);

/**
 * Test that groups have disjoint field numbers from their siblings and
 * parents.  This is NOT possible in proto1; only google.protobuf.  When attempting
 * to compile with proto1, this will emit an error; so we only include it
 * in proto2_unittest_proto.
 *
 * NO_PROTO1
 *
 * @generated from message proto2_unittest.TestDupFieldNumber
 */
export type TestDupFieldNumber = Message<"proto2_unittest.TestDupFieldNumber"> & {
  /**
   * NO_PROTO1
   *
   * @generated from field: int32 a = 1;
   */
  a: number;

  /**
   * NO_PROTO1
   *
   * @generated from field: proto2_unittest.TestDupFieldNumber.Foo foo = 2 [features.message_encoding = DELIMITED];
   */
  foo?: TestDupFieldNumber_Foo;

  /**
   * NO_PROTO1
   *
   * @generated from field: proto2_unittest.TestDupFieldNumber.Bar bar = 3 [features.message_encoding = DELIMITED];
   */
  bar?: TestDupFieldNumber_Bar;
};

/**
 * Describes the message proto2_unittest.TestDupFieldNumber.
 * Use `create(TestDupFieldNumberSchema)` to create a new message.
 */
export const TestDupFieldNumberSchema: GenMessage<TestDupFieldNumber> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 37);

/**
 * NO_PROTO1
 *
 * @generated from message proto2_unittest.TestDupFieldNumber.Foo
 */
export type TestDupFieldNumber_Foo = Message<"proto2_unittest.TestDupFieldNumber.Foo"> & {
  /**
   * NO_PROTO1
   *
   * @generated from field: int32 a = 1;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestDupFieldNumber.Foo.
 * Use `create(TestDupFieldNumber_FooSchema)` to create a new message.
 */
export const TestDupFieldNumber_FooSchema: GenMessage<TestDupFieldNumber_Foo> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 37, 0);

/**
 * NO_PROTO1
 *
 * @generated from message proto2_unittest.TestDupFieldNumber.Bar
 */
export type TestDupFieldNumber_Bar = Message<"proto2_unittest.TestDupFieldNumber.Bar"> & {
  /**
   * NO_PROTO1
   *
   * @generated from field: int32 a = 1;
   */
  a: number;
};

/**
 * Describes the message proto2_unittest.TestDupFieldNumber.Bar.
 * Use `create(TestDupFieldNumber_BarSchema)` to create a new message.
 */
export const TestDupFieldNumber_BarSchema: GenMessage<TestDupFieldNumber_Bar> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 37, 1);

/**
 * Additional messages for testing lazy fields.
 *
 * @generated from message proto2_unittest.TestEagerMessage
 */
export type TestEagerMessage = Message<"proto2_unittest.TestEagerMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes sub_message = 1;
   */
  subMessage?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestEagerMessage.
 * Use `create(TestEagerMessageSchema)` to create a new message.
 */
export const TestEagerMessageSchema: GenMessage<TestEagerMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 38);

/**
 * @generated from message proto2_unittest.TestLazyMessage
 */
export type TestLazyMessage = Message<"proto2_unittest.TestLazyMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes sub_message = 1;
   */
  subMessage?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestLazyMessage.
 * Use `create(TestLazyMessageSchema)` to create a new message.
 */
export const TestLazyMessageSchema: GenMessage<TestLazyMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 39);

/**
 * @generated from message proto2_unittest.TestLazyRequiredEnum
 */
export type TestLazyRequiredEnum = Message<"proto2_unittest.TestLazyRequiredEnum"> & {
  /**
   * @generated from field: proto2_unittest.TestRequiredOpenEnum optional_required_open_enum = 1;
   */
  optionalRequiredOpenEnum?: TestRequiredOpenEnum;

  /**
   * @generated from field: proto2_unittest.TestRequiredEnum optional_required_enum = 2;
   */
  optionalRequiredEnum?: TestRequiredEnum;

  /**
   * @generated from field: proto2_unittest.TestRequiredEnumNoMask optional_required_enum_no_mask = 3;
   */
  optionalRequiredEnumNoMask?: TestRequiredEnumNoMask;

  /**
   * @generated from field: proto2_unittest.TestRequiredEnumMulti optional_required_enum_multi = 4;
   */
  optionalRequiredEnumMulti?: TestRequiredEnumMulti;

  /**
   * @generated from field: proto2_unittest.TestRequiredNoMaskMulti optional_required_no_mask = 5;
   */
  optionalRequiredNoMask?: TestRequiredNoMaskMulti;
};

/**
 * Describes the message proto2_unittest.TestLazyRequiredEnum.
 * Use `create(TestLazyRequiredEnumSchema)` to create a new message.
 */
export const TestLazyRequiredEnumSchema: GenMessage<TestLazyRequiredEnum> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 40);

/**
 * @generated from message proto2_unittest.TestLazyMessageRepeated
 */
export type TestLazyMessageRepeated = Message<"proto2_unittest.TestLazyMessageRepeated"> & {
  /**
   * @generated from field: repeated proto2_unittest.TestLazyMessage repeated_message = 1;
   */
  repeatedMessage: TestLazyMessage[];
};

/**
 * Describes the message proto2_unittest.TestLazyMessageRepeated.
 * Use `create(TestLazyMessageRepeatedSchema)` to create a new message.
 */
export const TestLazyMessageRepeatedSchema: GenMessage<TestLazyMessageRepeated> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 41);

/**
 * @generated from message proto2_unittest.TestEagerMaybeLazy
 */
export type TestEagerMaybeLazy = Message<"proto2_unittest.TestEagerMaybeLazy"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes message_foo = 1;
   */
  messageFoo?: TestAllTypes;

  /**
   * @generated from field: proto2_unittest.TestAllTypes message_bar = 2;
   */
  messageBar?: TestAllTypes;

  /**
   * @generated from field: proto2_unittest.TestEagerMaybeLazy.NestedMessage message_baz = 3;
   */
  messageBaz?: TestEagerMaybeLazy_NestedMessage;
};

/**
 * Describes the message proto2_unittest.TestEagerMaybeLazy.
 * Use `create(TestEagerMaybeLazySchema)` to create a new message.
 */
export const TestEagerMaybeLazySchema: GenMessage<TestEagerMaybeLazy> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 42);

/**
 * @generated from message proto2_unittest.TestEagerMaybeLazy.NestedMessage
 */
export type TestEagerMaybeLazy_NestedMessage = Message<"proto2_unittest.TestEagerMaybeLazy.NestedMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestPackedTypes packed = 1;
   */
  packed?: TestPackedTypes;
};

/**
 * Describes the message proto2_unittest.TestEagerMaybeLazy.NestedMessage.
 * Use `create(TestEagerMaybeLazy_NestedMessageSchema)` to create a new message.
 */
export const TestEagerMaybeLazy_NestedMessageSchema: GenMessage<TestEagerMaybeLazy_NestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 42, 0);

/**
 * Needed for a Python test.
 *
 * @generated from message proto2_unittest.TestNestedMessageHasBits
 */
export type TestNestedMessageHasBits = Message<"proto2_unittest.TestNestedMessageHasBits"> & {
  /**
   * @generated from field: proto2_unittest.TestNestedMessageHasBits.NestedMessage optional_nested_message = 1;
   */
  optionalNestedMessage?: TestNestedMessageHasBits_NestedMessage;
};

/**
 * Describes the message proto2_unittest.TestNestedMessageHasBits.
 * Use `create(TestNestedMessageHasBitsSchema)` to create a new message.
 */
export const TestNestedMessageHasBitsSchema: GenMessage<TestNestedMessageHasBits> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 43);

/**
 * @generated from message proto2_unittest.TestNestedMessageHasBits.NestedMessage
 */
export type TestNestedMessageHasBits_NestedMessage = Message<"proto2_unittest.TestNestedMessageHasBits.NestedMessage"> & {
  /**
   * @generated from field: repeated int32 nestedmessage_repeated_int32 = 1;
   */
  nestedmessageRepeatedInt32: number[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignMessage nestedmessage_repeated_foreignmessage = 2;
   */
  nestedmessageRepeatedForeignmessage: ForeignMessage[];
};

/**
 * Describes the message proto2_unittest.TestNestedMessageHasBits.NestedMessage.
 * Use `create(TestNestedMessageHasBits_NestedMessageSchema)` to create a new message.
 */
export const TestNestedMessageHasBits_NestedMessageSchema: GenMessage<TestNestedMessageHasBits_NestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 43, 0);

/**
 * Test message with CamelCase field names.  This violates Protocol Buffer
 * standard style.
 *
 * @generated from message proto2_unittest.TestCamelCaseFieldNames
 */
export type TestCamelCaseFieldNames = Message<"proto2_unittest.TestCamelCaseFieldNames"> & {
  /**
   * @generated from field: int32 PrimitiveField = 1;
   */
  PrimitiveField: number;

  /**
   * @generated from field: string StringField = 2;
   */
  StringField: string;

  /**
   * @generated from field: proto2_unittest.ForeignEnum EnumField = 3;
   */
  EnumField: ForeignEnum;

  /**
   * @generated from field: proto2_unittest.ForeignMessage MessageField = 4;
   */
  MessageField?: ForeignMessage;

  /**
   * @generated from field: string StringPieceField = 5;
   */
  StringPieceField: string;

  /**
   * @generated from field: string CordField = 6;
   */
  CordField: string;

  /**
   * @generated from field: repeated int32 RepeatedPrimitiveField = 7;
   */
  RepeatedPrimitiveField: number[];

  /**
   * @generated from field: repeated string RepeatedStringField = 8;
   */
  RepeatedStringField: string[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignEnum RepeatedEnumField = 9;
   */
  RepeatedEnumField: ForeignEnum[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignMessage RepeatedMessageField = 10;
   */
  RepeatedMessageField: ForeignMessage[];

  /**
   * @generated from field: repeated string RepeatedStringPieceField = 11;
   */
  RepeatedStringPieceField: string[];

  /**
   * @generated from field: repeated string RepeatedCordField = 12;
   */
  RepeatedCordField: string[];
};

/**
 * Describes the message proto2_unittest.TestCamelCaseFieldNames.
 * Use `create(TestCamelCaseFieldNamesSchema)` to create a new message.
 */
export const TestCamelCaseFieldNamesSchema: GenMessage<TestCamelCaseFieldNames> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 44);

/**
 * We list fields out of order, to ensure that we're using field number and not
 * field index to determine serialization order.
 *
 * @generated from message proto2_unittest.TestFieldOrderings
 */
export type TestFieldOrderings = Message<"proto2_unittest.TestFieldOrderings"> & {
  /**
   * @generated from field: string my_string = 11;
   */
  myString: string;

  /**
   * @generated from field: int64 my_int = 1;
   */
  myInt: bigint;

  /**
   * @generated from field: float my_float = 101;
   */
  myFloat: number;

  /**
   * @generated from field: proto2_unittest.TestFieldOrderings.NestedMessage optional_nested_message = 200;
   */
  optionalNestedMessage?: TestFieldOrderings_NestedMessage;
};

/**
 * Describes the message proto2_unittest.TestFieldOrderings.
 * Use `create(TestFieldOrderingsSchema)` to create a new message.
 */
export const TestFieldOrderingsSchema: GenMessage<TestFieldOrderings> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 45);

/**
 * @generated from message proto2_unittest.TestFieldOrderings.NestedMessage
 */
export type TestFieldOrderings_NestedMessage = Message<"proto2_unittest.TestFieldOrderings.NestedMessage"> & {
  /**
   * @generated from field: int64 oo = 2;
   */
  oo: bigint;

  /**
   * The field name "b" fails to compile in proto1 because it conflicts with
   * a local variable named "b" in one of the generated methods.  Doh.
   * This file needs to compile in proto1 to test backwards-compatibility.
   *
   * @generated from field: int32 bb = 1;
   */
  bb: number;
};

/**
 * Describes the message proto2_unittest.TestFieldOrderings.NestedMessage.
 * Use `create(TestFieldOrderings_NestedMessageSchema)` to create a new message.
 */
export const TestFieldOrderings_NestedMessageSchema: GenMessage<TestFieldOrderings_NestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 45, 0);

/**
 * @generated from message proto2_unittest.TestExtensionOrderings1
 */
export type TestExtensionOrderings1 = Message<"proto2_unittest.TestExtensionOrderings1"> & {
  /**
   * @generated from field: string my_string = 1;
   */
  myString: string;
};

/**
 * Describes the message proto2_unittest.TestExtensionOrderings1.
 * Use `create(TestExtensionOrderings1Schema)` to create a new message.
 */
export const TestExtensionOrderings1Schema: GenMessage<TestExtensionOrderings1> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 46);

/**
 * @generated from extension: proto2_unittest.TestExtensionOrderings1 test_ext_orderings1 = 13;
 */
export const TestExtensionOrderings1_test_ext_orderings1: GenExtension<TestFieldOrderings, TestExtensionOrderings1> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 46, 0);

/**
 * @generated from message proto2_unittest.TestExtensionOrderings2
 */
export type TestExtensionOrderings2 = Message<"proto2_unittest.TestExtensionOrderings2"> & {
  /**
   * @generated from field: string my_string = 1;
   */
  myString: string;
};

/**
 * Describes the message proto2_unittest.TestExtensionOrderings2.
 * Use `create(TestExtensionOrderings2Schema)` to create a new message.
 */
export const TestExtensionOrderings2Schema: GenMessage<TestExtensionOrderings2> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 47);

/**
 * @generated from message proto2_unittest.TestExtensionOrderings2.TestExtensionOrderings3
 */
export type TestExtensionOrderings2_TestExtensionOrderings3 = Message<"proto2_unittest.TestExtensionOrderings2.TestExtensionOrderings3"> & {
  /**
   * @generated from field: string my_string = 1;
   */
  myString: string;
};

/**
 * Describes the message proto2_unittest.TestExtensionOrderings2.TestExtensionOrderings3.
 * Use `create(TestExtensionOrderings2_TestExtensionOrderings3Schema)` to create a new message.
 */
export const TestExtensionOrderings2_TestExtensionOrderings3Schema: GenMessage<TestExtensionOrderings2_TestExtensionOrderings3> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 47, 0);

/**
 * @generated from extension: proto2_unittest.TestExtensionOrderings2.TestExtensionOrderings3 test_ext_orderings3 = 14;
 */
export const TestExtensionOrderings2_TestExtensionOrderings3_test_ext_orderings3: GenExtension<TestFieldOrderings, TestExtensionOrderings2_TestExtensionOrderings3> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 47, 0, 0);

/**
 * @generated from extension: proto2_unittest.TestExtensionOrderings2 test_ext_orderings2 = 12;
 */
export const TestExtensionOrderings2_test_ext_orderings2: GenExtension<TestFieldOrderings, TestExtensionOrderings2> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 47, 0);

/**
 * @generated from message proto2_unittest.TestExtremeDefaultValues
 */
export type TestExtremeDefaultValues = Message<"proto2_unittest.TestExtremeDefaultValues"> & {
  /**
   * @generated from field: bytes escaped_bytes = 1 [default = "\000\001\007\010\014\n\r\t\013\\\'\\"\376"];
   */
  escapedBytes: Uint8Array;

  /**
   * @generated from field: uint32 large_uint32 = 2 [default = 4294967295];
   */
  largeUint32: number;

  /**
   * @generated from field: uint64 large_uint64 = 3 [default = 18446744073709551615];
   */
  largeUint64: bigint;

  /**
   * @generated from field: int32 small_int32 = 4 [default = -2147483647];
   */
  smallInt32: number;

  /**
   * @generated from field: int64 small_int64 = 5 [default = -9223372036854775807];
   */
  smallInt64: bigint;

  /**
   * @generated from field: int32 really_small_int32 = 21 [default = -2147483648];
   */
  reallySmallInt32: number;

  /**
   * @generated from field: int64 really_small_int64 = 22 [default = -9223372036854775808];
   */
  reallySmallInt64: bigint;

  /**
   * The default value here is UTF-8 for "\u1234".  (We could also just type
   * the UTF-8 text directly into this text file rather than escape it, but
   * lots of people use editors that would be confused by this.)
   *
   * @generated from field: string utf8_string = 6 [default = "ሴ"];
   */
  utf8String: string;

  /**
   * Tests for single-precision floating-point values.
   *
   * @generated from field: float zero_float = 7 [default = 0];
   */
  zeroFloat: number;

  /**
   * @generated from field: float one_float = 8 [default = 1];
   */
  oneFloat: number;

  /**
   * @generated from field: float small_float = 9 [default = 1.5];
   */
  smallFloat: number;

  /**
   * @generated from field: float negative_one_float = 10 [default = -1];
   */
  negativeOneFloat: number;

  /**
   * @generated from field: float negative_float = 11 [default = -1.5];
   */
  negativeFloat: number;

  /**
   * Using exponents
   *
   * @generated from field: float large_float = 12 [default = 2e+08];
   */
  largeFloat: number;

  /**
   * @generated from field: float small_negative_float = 13 [default = -8e-28];
   */
  smallNegativeFloat: number;

  /**
   * Text for nonfinite floating-point values.
   *
   * @generated from field: double inf_double = 14 [default = inf];
   */
  infDouble: number;

  /**
   * @generated from field: double neg_inf_double = 15 [default = -inf];
   */
  negInfDouble: number;

  /**
   * @generated from field: double nan_double = 16 [default = nan];
   */
  nanDouble: number;

  /**
   * @generated from field: float inf_float = 17 [default = inf];
   */
  infFloat: number;

  /**
   * @generated from field: float neg_inf_float = 18 [default = -inf];
   */
  negInfFloat: number;

  /**
   * @generated from field: float nan_float = 19 [default = nan];
   */
  nanFloat: number;

  /**
   * Tests for C++ trigraphs.
   * Trigraphs should be escaped in C++ generated files, but they should not be
   * escaped for other languages.
   * Note that in .proto file, "\?" is a valid way to escape ? in string
   * literals.
   *
   * @generated from field: string cpp_trigraph = 20 [default = "? ? ?? ?? ??? ??/ ??-"];
   */
  cppTrigraph: string;

  /**
   * String defaults containing the character '\000'
   *
   * @generated from field: string string_with_zero = 23 [default = "hel lo"];
   */
  stringWithZero: string;

  /**
   * @generated from field: bytes bytes_with_zero = 24 [default = "wor\000ld"];
   */
  bytesWithZero: Uint8Array;

  /**
   * @generated from field: string string_piece_with_zero = 25 [default = "ab c"];
   */
  stringPieceWithZero: string;

  /**
   * @generated from field: string cord_with_zero = 26 [default = "12 3"];
   */
  cordWithZero: string;

  /**
   * @generated from field: string replacement_string = 27 [default = "${unknown}"];
   */
  replacementString: string;
};

/**
 * Describes the message proto2_unittest.TestExtremeDefaultValues.
 * Use `create(TestExtremeDefaultValuesSchema)` to create a new message.
 */
export const TestExtremeDefaultValuesSchema: GenMessage<TestExtremeDefaultValues> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 48);

/**
 * @generated from message proto2_unittest.SparseEnumMessage
 */
export type SparseEnumMessage = Message<"proto2_unittest.SparseEnumMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestSparseEnum sparse_enum = 1;
   */
  sparseEnum: TestSparseEnum;
};

/**
 * Describes the message proto2_unittest.SparseEnumMessage.
 * Use `create(SparseEnumMessageSchema)` to create a new message.
 */
export const SparseEnumMessageSchema: GenMessage<SparseEnumMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 49);

/**
 * Test String and Bytes: string is for valid UTF-8 strings
 *
 * @generated from message proto2_unittest.OneString
 */
export type OneString = Message<"proto2_unittest.OneString"> & {
  /**
   * @generated from field: string data = 1;
   */
  data: string;
};

/**
 * Describes the message proto2_unittest.OneString.
 * Use `create(OneStringSchema)` to create a new message.
 */
export const OneStringSchema: GenMessage<OneString> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 50);

/**
 * @generated from message proto2_unittest.MoreString
 */
export type MoreString = Message<"proto2_unittest.MoreString"> & {
  /**
   * @generated from field: repeated string data = 1;
   */
  data: string[];
};

/**
 * Describes the message proto2_unittest.MoreString.
 * Use `create(MoreStringSchema)` to create a new message.
 */
export const MoreStringSchema: GenMessage<MoreString> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 51);

/**
 * @generated from message proto2_unittest.OneBytes
 */
export type OneBytes = Message<"proto2_unittest.OneBytes"> & {
  /**
   * @generated from field: bytes data = 1;
   */
  data: Uint8Array;
};

/**
 * Describes the message proto2_unittest.OneBytes.
 * Use `create(OneBytesSchema)` to create a new message.
 */
export const OneBytesSchema: GenMessage<OneBytes> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 52);

/**
 * @generated from message proto2_unittest.MoreBytes
 */
export type MoreBytes = Message<"proto2_unittest.MoreBytes"> & {
  /**
   * @generated from field: repeated bytes data = 1;
   */
  data: Uint8Array[];
};

/**
 * Describes the message proto2_unittest.MoreBytes.
 * Use `create(MoreBytesSchema)` to create a new message.
 */
export const MoreBytesSchema: GenMessage<MoreBytes> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 53);

/**
 * @generated from message proto2_unittest.ManyOptionalString
 */
export type ManyOptionalString = Message<"proto2_unittest.ManyOptionalString"> & {
  /**
   * @generated from field: string str1 = 1;
   */
  str1: string;

  /**
   * @generated from field: string str2 = 2;
   */
  str2: string;

  /**
   * @generated from field: string str3 = 3;
   */
  str3: string;

  /**
   * @generated from field: string str4 = 4;
   */
  str4: string;

  /**
   * @generated from field: string str5 = 5;
   */
  str5: string;

  /**
   * @generated from field: string str6 = 6;
   */
  str6: string;

  /**
   * @generated from field: string str7 = 7;
   */
  str7: string;

  /**
   * @generated from field: string str8 = 8;
   */
  str8: string;

  /**
   * @generated from field: string str9 = 9;
   */
  str9: string;

  /**
   * @generated from field: string str10 = 10;
   */
  str10: string;

  /**
   * @generated from field: string str11 = 11;
   */
  str11: string;

  /**
   * @generated from field: string str12 = 12;
   */
  str12: string;

  /**
   * @generated from field: string str13 = 13;
   */
  str13: string;

  /**
   * @generated from field: string str14 = 14;
   */
  str14: string;

  /**
   * @generated from field: string str15 = 15;
   */
  str15: string;

  /**
   * @generated from field: string str16 = 16;
   */
  str16: string;

  /**
   * @generated from field: string str17 = 17;
   */
  str17: string;

  /**
   * @generated from field: string str18 = 18;
   */
  str18: string;

  /**
   * @generated from field: string str19 = 19;
   */
  str19: string;

  /**
   * @generated from field: string str20 = 20;
   */
  str20: string;

  /**
   * @generated from field: string str21 = 21;
   */
  str21: string;

  /**
   * @generated from field: string str22 = 22;
   */
  str22: string;

  /**
   * @generated from field: string str23 = 23;
   */
  str23: string;

  /**
   * @generated from field: string str24 = 24;
   */
  str24: string;

  /**
   * @generated from field: string str25 = 25;
   */
  str25: string;

  /**
   * @generated from field: string str26 = 26;
   */
  str26: string;

  /**
   * @generated from field: string str27 = 27;
   */
  str27: string;

  /**
   * @generated from field: string str28 = 28;
   */
  str28: string;

  /**
   * @generated from field: string str29 = 29;
   */
  str29: string;

  /**
   * @generated from field: string str30 = 30;
   */
  str30: string;

  /**
   * @generated from field: string str31 = 31;
   */
  str31: string;

  /**
   * @generated from field: string str32 = 32;
   */
  str32: string;
};

/**
 * Describes the message proto2_unittest.ManyOptionalString.
 * Use `create(ManyOptionalStringSchema)` to create a new message.
 */
export const ManyOptionalStringSchema: GenMessage<ManyOptionalString> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 54);

/**
 * Test int32, uint32, int64, uint64, and bool are all compatible
 *
 * @generated from message proto2_unittest.Int32Message
 */
export type Int32Message = Message<"proto2_unittest.Int32Message"> & {
  /**
   * @generated from field: int32 data = 1;
   */
  data: number;
};

/**
 * Describes the message proto2_unittest.Int32Message.
 * Use `create(Int32MessageSchema)` to create a new message.
 */
export const Int32MessageSchema: GenMessage<Int32Message> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 55);

/**
 * @generated from message proto2_unittest.Uint32Message
 */
export type Uint32Message = Message<"proto2_unittest.Uint32Message"> & {
  /**
   * @generated from field: uint32 data = 1;
   */
  data: number;
};

/**
 * Describes the message proto2_unittest.Uint32Message.
 * Use `create(Uint32MessageSchema)` to create a new message.
 */
export const Uint32MessageSchema: GenMessage<Uint32Message> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 56);

/**
 * @generated from message proto2_unittest.Int64Message
 */
export type Int64Message = Message<"proto2_unittest.Int64Message"> & {
  /**
   * @generated from field: int64 data = 1;
   */
  data: bigint;
};

/**
 * Describes the message proto2_unittest.Int64Message.
 * Use `create(Int64MessageSchema)` to create a new message.
 */
export const Int64MessageSchema: GenMessage<Int64Message> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 57);

/**
 * @generated from message proto2_unittest.Uint64Message
 */
export type Uint64Message = Message<"proto2_unittest.Uint64Message"> & {
  /**
   * @generated from field: uint64 data = 1;
   */
  data: bigint;
};

/**
 * Describes the message proto2_unittest.Uint64Message.
 * Use `create(Uint64MessageSchema)` to create a new message.
 */
export const Uint64MessageSchema: GenMessage<Uint64Message> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 58);

/**
 * @generated from message proto2_unittest.BoolMessage
 */
export type BoolMessage = Message<"proto2_unittest.BoolMessage"> & {
  /**
   * @generated from field: bool data = 1;
   */
  data: boolean;
};

/**
 * Describes the message proto2_unittest.BoolMessage.
 * Use `create(BoolMessageSchema)` to create a new message.
 */
export const BoolMessageSchema: GenMessage<BoolMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 59);

/**
 * Test oneofs.
 *
 * @generated from message proto2_unittest.TestOneof
 */
export type TestOneof = Message<"proto2_unittest.TestOneof"> & {
  /**
   * @generated from oneof proto2_unittest.TestOneof.foo
   */
  foo: {
    /**
     * @generated from field: int32 foo_int = 1;
     */
    value: number;
    case: "fooInt";
  } | {
    /**
     * @generated from field: string foo_string = 2;
     */
    value: string;
    case: "fooString";
  } | {
    /**
     * @generated from field: proto2_unittest.TestAllTypes foo_message = 3;
     */
    value: TestAllTypes;
    case: "fooMessage";
  } | {
    /**
     * @generated from field: proto2_unittest.TestOneof.FooGroup foogroup = 4 [features.message_encoding = DELIMITED];
     */
    value: TestOneof_FooGroup;
    case: "foogroup";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto2_unittest.TestOneof.
 * Use `create(TestOneofSchema)` to create a new message.
 */
export const TestOneofSchema: GenMessage<TestOneof> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 60);

/**
 * @generated from message proto2_unittest.TestOneof.FooGroup
 */
export type TestOneof_FooGroup = Message<"proto2_unittest.TestOneof.FooGroup"> & {
  /**
   * @generated from field: int32 a = 5;
   */
  a: number;

  /**
   * @generated from field: string b = 6;
   */
  b: string;
};

/**
 * Describes the message proto2_unittest.TestOneof.FooGroup.
 * Use `create(TestOneof_FooGroupSchema)` to create a new message.
 */
export const TestOneof_FooGroupSchema: GenMessage<TestOneof_FooGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 60, 0);

/**
 * @generated from message proto2_unittest.TestOneofBackwardsCompatible
 */
export type TestOneofBackwardsCompatible = Message<"proto2_unittest.TestOneofBackwardsCompatible"> & {
  /**
   * @generated from field: int32 foo_int = 1;
   */
  fooInt: number;

  /**
   * @generated from field: string foo_string = 2;
   */
  fooString: string;

  /**
   * @generated from field: proto2_unittest.TestAllTypes foo_message = 3;
   */
  fooMessage?: TestAllTypes;

  /**
   * @generated from field: proto2_unittest.TestOneofBackwardsCompatible.FooGroup foogroup = 4 [features.message_encoding = DELIMITED];
   */
  foogroup?: TestOneofBackwardsCompatible_FooGroup;
};

/**
 * Describes the message proto2_unittest.TestOneofBackwardsCompatible.
 * Use `create(TestOneofBackwardsCompatibleSchema)` to create a new message.
 */
export const TestOneofBackwardsCompatibleSchema: GenMessage<TestOneofBackwardsCompatible> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 61);

/**
 * @generated from message proto2_unittest.TestOneofBackwardsCompatible.FooGroup
 */
export type TestOneofBackwardsCompatible_FooGroup = Message<"proto2_unittest.TestOneofBackwardsCompatible.FooGroup"> & {
  /**
   * @generated from field: int32 a = 5;
   */
  a: number;

  /**
   * @generated from field: string b = 6;
   */
  b: string;
};

/**
 * Describes the message proto2_unittest.TestOneofBackwardsCompatible.FooGroup.
 * Use `create(TestOneofBackwardsCompatible_FooGroupSchema)` to create a new message.
 */
export const TestOneofBackwardsCompatible_FooGroupSchema: GenMessage<TestOneofBackwardsCompatible_FooGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 61, 0);

/**
 * @generated from message proto2_unittest.TestOneof2
 */
export type TestOneof2 = Message<"proto2_unittest.TestOneof2"> & {
  /**
   * @generated from oneof proto2_unittest.TestOneof2.foo
   */
  foo: {
    /**
     * @generated from field: int32 foo_int = 1;
     */
    value: number;
    case: "fooInt";
  } | {
    /**
     * @generated from field: string foo_string = 2;
     */
    value: string;
    case: "fooString";
  } | {
    /**
     * @generated from field: string foo_cord = 3;
     */
    value: string;
    case: "fooCord";
  } | {
    /**
     * @generated from field: string foo_string_piece = 4;
     */
    value: string;
    case: "fooStringPiece";
  } | {
    /**
     * @generated from field: bytes foo_bytes = 5;
     */
    value: Uint8Array;
    case: "fooBytes";
  } | {
    /**
     * @generated from field: proto2_unittest.TestOneof2.NestedEnum foo_enum = 6;
     */
    value: TestOneof2_NestedEnum;
    case: "fooEnum";
  } | {
    /**
     * @generated from field: proto2_unittest.TestOneof2.NestedMessage foo_message = 7;
     */
    value: TestOneof2_NestedMessage;
    case: "fooMessage";
  } | {
    /**
     * @generated from field: proto2_unittest.TestOneof2.FooGroup foogroup = 8 [features.message_encoding = DELIMITED];
     */
    value: TestOneof2_FooGroup;
    case: "foogroup";
  } | {
    /**
     * @generated from field: proto2_unittest.TestOneof2.NestedMessage foo_lazy_message = 11;
     */
    value: TestOneof2_NestedMessage;
    case: "fooLazyMessage";
  } | {
    /**
     * @generated from field: bytes foo_bytes_cord = 30;
     */
    value: Uint8Array;
    case: "fooBytesCord";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from oneof proto2_unittest.TestOneof2.bar
   */
  bar: {
    /**
     * @generated from field: int32 bar_int = 12 [default = 5];
     */
    value: number;
    case: "barInt";
  } | {
    /**
     * @generated from field: string bar_string = 13 [default = "STRING"];
     */
    value: string;
    case: "barString";
  } | {
    /**
     * @generated from field: string bar_cord = 14 [default = "CORD"];
     */
    value: string;
    case: "barCord";
  } | {
    /**
     * @generated from field: string bar_string_piece = 15 [default = "SPIECE"];
     */
    value: string;
    case: "barStringPiece";
  } | {
    /**
     * @generated from field: bytes bar_bytes = 16 [default = "BYTES"];
     */
    value: Uint8Array;
    case: "barBytes";
  } | {
    /**
     * @generated from field: proto2_unittest.TestOneof2.NestedEnum bar_enum = 17 [default = BAR];
     */
    value: TestOneof2_NestedEnum;
    case: "barEnum";
  } | {
    /**
     * @generated from field: string bar_string_with_empty_default = 20 [default = ""];
     */
    value: string;
    case: "barStringWithEmptyDefault";
  } | {
    /**
     * @generated from field: string bar_cord_with_empty_default = 21 [default = ""];
     */
    value: string;
    case: "barCordWithEmptyDefault";
  } | {
    /**
     * @generated from field: string bar_string_piece_with_empty_default = 22 [default = ""];
     */
    value: string;
    case: "barStringPieceWithEmptyDefault";
  } | {
    /**
     * @generated from field: bytes bar_bytes_with_empty_default = 23 [default = ""];
     */
    value: Uint8Array;
    case: "barBytesWithEmptyDefault";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from field: int32 baz_int = 18;
   */
  bazInt: number;

  /**
   * @generated from field: string baz_string = 19 [default = "BAZ"];
   */
  bazString: string;
};

/**
 * Describes the message proto2_unittest.TestOneof2.
 * Use `create(TestOneof2Schema)` to create a new message.
 */
export const TestOneof2Schema: GenMessage<TestOneof2> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 62);

/**
 * @generated from message proto2_unittest.TestOneof2.FooGroup
 */
export type TestOneof2_FooGroup = Message<"proto2_unittest.TestOneof2.FooGroup"> & {
  /**
   * @generated from field: int32 a = 9;
   */
  a: number;

  /**
   * @generated from field: string b = 10;
   */
  b: string;
};

/**
 * Describes the message proto2_unittest.TestOneof2.FooGroup.
 * Use `create(TestOneof2_FooGroupSchema)` to create a new message.
 */
export const TestOneof2_FooGroupSchema: GenMessage<TestOneof2_FooGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 62, 0);

/**
 * @generated from message proto2_unittest.TestOneof2.NestedMessage
 */
export type TestOneof2_NestedMessage = Message<"proto2_unittest.TestOneof2.NestedMessage"> & {
  /**
   * @generated from field: int64 moo_int = 1;
   */
  mooInt: bigint;

  /**
   * @generated from field: repeated int32 corge_int = 2;
   */
  corgeInt: number[];

  /**
   * @generated from field: proto2_unittest.TestOneof2.NestedMessage child = 3;
   */
  child?: TestOneof2_NestedMessage;
};

/**
 * Describes the message proto2_unittest.TestOneof2.NestedMessage.
 * Use `create(TestOneof2_NestedMessageSchema)` to create a new message.
 */
export const TestOneof2_NestedMessageSchema: GenMessage<TestOneof2_NestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 62, 1);

/**
 * @generated from enum proto2_unittest.TestOneof2.NestedEnum
 */
export enum TestOneof2_NestedEnum {
  /**
   * @generated from enum value: FOO = 1;
   */
  FOO = 1,

  /**
   * @generated from enum value: BAR = 2;
   */
  BAR = 2,

  /**
   * @generated from enum value: BAZ = 3;
   */
  BAZ = 3,
}

/**
 * Describes the enum proto2_unittest.TestOneof2.NestedEnum.
 */
export const TestOneof2_NestedEnumSchema: GenEnum<TestOneof2_NestedEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 62, 0);

/**
 * @generated from message proto2_unittest.TestRequiredOneof
 */
export type TestRequiredOneof = Message<"proto2_unittest.TestRequiredOneof"> & {
  /**
   * @generated from oneof proto2_unittest.TestRequiredOneof.foo
   */
  foo: {
    /**
     * @generated from field: int32 foo_int = 1;
     */
    value: number;
    case: "fooInt";
  } | {
    /**
     * @generated from field: string foo_string = 2;
     */
    value: string;
    case: "fooString";
  } | {
    /**
     * @generated from field: proto2_unittest.TestRequiredOneof.NestedMessage foo_message = 3;
     */
    value: TestRequiredOneof_NestedMessage;
    case: "fooMessage";
  } | {
    /**
     * @generated from field: proto2_unittest.TestRequiredOneof.NestedMessage foo_lazy_message = 4;
     */
    value: TestRequiredOneof_NestedMessage;
    case: "fooLazyMessage";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto2_unittest.TestRequiredOneof.
 * Use `create(TestRequiredOneofSchema)` to create a new message.
 */
export const TestRequiredOneofSchema: GenMessage<TestRequiredOneof> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 63);

/**
 * @generated from message proto2_unittest.TestRequiredOneof.NestedMessage
 */
export type TestRequiredOneof_NestedMessage = Message<"proto2_unittest.TestRequiredOneof.NestedMessage"> & {
  /**
   * @generated from field: double required_double = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredDouble: number;
};

/**
 * Describes the message proto2_unittest.TestRequiredOneof.NestedMessage.
 * Use `create(TestRequiredOneof_NestedMessageSchema)` to create a new message.
 */
export const TestRequiredOneof_NestedMessageSchema: GenMessage<TestRequiredOneof_NestedMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 63, 0);

/**
 * @generated from message proto2_unittest.TestPackedTypes
 */
export type TestPackedTypes = Message<"proto2_unittest.TestPackedTypes"> & {
  /**
   * @generated from field: repeated int32 packed_int32 = 90 [features.repeated_field_encoding = PACKED];
   */
  packedInt32: number[];

  /**
   * @generated from field: repeated int64 packed_int64 = 91 [features.repeated_field_encoding = PACKED];
   */
  packedInt64: bigint[];

  /**
   * @generated from field: repeated uint32 packed_uint32 = 92 [features.repeated_field_encoding = PACKED];
   */
  packedUint32: number[];

  /**
   * @generated from field: repeated uint64 packed_uint64 = 93 [features.repeated_field_encoding = PACKED];
   */
  packedUint64: bigint[];

  /**
   * @generated from field: repeated sint32 packed_sint32 = 94 [features.repeated_field_encoding = PACKED];
   */
  packedSint32: number[];

  /**
   * @generated from field: repeated sint64 packed_sint64 = 95 [features.repeated_field_encoding = PACKED];
   */
  packedSint64: bigint[];

  /**
   * @generated from field: repeated fixed32 packed_fixed32 = 96 [features.repeated_field_encoding = PACKED];
   */
  packedFixed32: number[];

  /**
   * @generated from field: repeated fixed64 packed_fixed64 = 97 [features.repeated_field_encoding = PACKED];
   */
  packedFixed64: bigint[];

  /**
   * @generated from field: repeated sfixed32 packed_sfixed32 = 98 [features.repeated_field_encoding = PACKED];
   */
  packedSfixed32: number[];

  /**
   * @generated from field: repeated sfixed64 packed_sfixed64 = 99 [features.repeated_field_encoding = PACKED];
   */
  packedSfixed64: bigint[];

  /**
   * @generated from field: repeated float packed_float = 100 [features.repeated_field_encoding = PACKED];
   */
  packedFloat: number[];

  /**
   * @generated from field: repeated double packed_double = 101 [features.repeated_field_encoding = PACKED];
   */
  packedDouble: number[];

  /**
   * @generated from field: repeated bool packed_bool = 102 [features.repeated_field_encoding = PACKED];
   */
  packedBool: boolean[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignEnum packed_enum = 103 [features.repeated_field_encoding = PACKED];
   */
  packedEnum: ForeignEnum[];
};

/**
 * Describes the message proto2_unittest.TestPackedTypes.
 * Use `create(TestPackedTypesSchema)` to create a new message.
 */
export const TestPackedTypesSchema: GenMessage<TestPackedTypes> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 64);

/**
 * A message with the same fields as TestPackedTypes, but without packing. Used
 * to test packed <-> unpacked wire compatibility.
 *
 * @generated from message proto2_unittest.TestUnpackedTypes
 */
export type TestUnpackedTypes = Message<"proto2_unittest.TestUnpackedTypes"> & {
  /**
   * @generated from field: repeated int32 unpacked_int32 = 90;
   */
  unpackedInt32: number[];

  /**
   * @generated from field: repeated int64 unpacked_int64 = 91;
   */
  unpackedInt64: bigint[];

  /**
   * @generated from field: repeated uint32 unpacked_uint32 = 92;
   */
  unpackedUint32: number[];

  /**
   * @generated from field: repeated uint64 unpacked_uint64 = 93;
   */
  unpackedUint64: bigint[];

  /**
   * @generated from field: repeated sint32 unpacked_sint32 = 94;
   */
  unpackedSint32: number[];

  /**
   * @generated from field: repeated sint64 unpacked_sint64 = 95;
   */
  unpackedSint64: bigint[];

  /**
   * @generated from field: repeated fixed32 unpacked_fixed32 = 96;
   */
  unpackedFixed32: number[];

  /**
   * @generated from field: repeated fixed64 unpacked_fixed64 = 97;
   */
  unpackedFixed64: bigint[];

  /**
   * @generated from field: repeated sfixed32 unpacked_sfixed32 = 98;
   */
  unpackedSfixed32: number[];

  /**
   * @generated from field: repeated sfixed64 unpacked_sfixed64 = 99;
   */
  unpackedSfixed64: bigint[];

  /**
   * @generated from field: repeated float unpacked_float = 100;
   */
  unpackedFloat: number[];

  /**
   * @generated from field: repeated double unpacked_double = 101;
   */
  unpackedDouble: number[];

  /**
   * @generated from field: repeated bool unpacked_bool = 102;
   */
  unpackedBool: boolean[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignEnum unpacked_enum = 103;
   */
  unpackedEnum: ForeignEnum[];
};

/**
 * Describes the message proto2_unittest.TestUnpackedTypes.
 * Use `create(TestUnpackedTypesSchema)` to create a new message.
 */
export const TestUnpackedTypesSchema: GenMessage<TestUnpackedTypes> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 65);

/**
 * @generated from message proto2_unittest.TestPackedExtensions
 */
export type TestPackedExtensions = Message<"proto2_unittest.TestPackedExtensions"> & {
};

/**
 * Describes the message proto2_unittest.TestPackedExtensions.
 * Use `create(TestPackedExtensionsSchema)` to create a new message.
 */
export const TestPackedExtensionsSchema: GenMessage<TestPackedExtensions> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 66);

/**
 * @generated from message proto2_unittest.TestUnpackedExtensions
 */
export type TestUnpackedExtensions = Message<"proto2_unittest.TestUnpackedExtensions"> & {
};

/**
 * Describes the message proto2_unittest.TestUnpackedExtensions.
 * Use `create(TestUnpackedExtensionsSchema)` to create a new message.
 */
export const TestUnpackedExtensionsSchema: GenMessage<TestUnpackedExtensions> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 67);

/**
 * Used by ExtensionSetTest/DynamicExtensions.  The test actually builds
 * a set of extensions to TestAllExtensions dynamically, based on the fields
 * of this message type.
 *
 * @generated from message proto2_unittest.TestDynamicExtensions
 */
export type TestDynamicExtensions = Message<"proto2_unittest.TestDynamicExtensions"> & {
  /**
   * @generated from field: fixed32 scalar_extension = 2000;
   */
  scalarExtension: number;

  /**
   * @generated from field: proto2_unittest.ForeignEnum enum_extension = 2001;
   */
  enumExtension: ForeignEnum;

  /**
   * @generated from field: proto2_unittest.TestDynamicExtensions.DynamicEnumType dynamic_enum_extension = 2002;
   */
  dynamicEnumExtension: TestDynamicExtensions_DynamicEnumType;

  /**
   * @generated from field: proto2_unittest.ForeignMessage message_extension = 2003;
   */
  messageExtension?: ForeignMessage;

  /**
   * @generated from field: proto2_unittest.TestDynamicExtensions.DynamicMessageType dynamic_message_extension = 2004;
   */
  dynamicMessageExtension?: TestDynamicExtensions_DynamicMessageType;

  /**
   * @generated from field: repeated string repeated_extension = 2005;
   */
  repeatedExtension: string[];

  /**
   * @generated from field: repeated sint32 packed_extension = 2006 [features.repeated_field_encoding = PACKED];
   */
  packedExtension: number[];
};

/**
 * Describes the message proto2_unittest.TestDynamicExtensions.
 * Use `create(TestDynamicExtensionsSchema)` to create a new message.
 */
export const TestDynamicExtensionsSchema: GenMessage<TestDynamicExtensions> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 68);

/**
 * @generated from message proto2_unittest.TestDynamicExtensions.DynamicMessageType
 */
export type TestDynamicExtensions_DynamicMessageType = Message<"proto2_unittest.TestDynamicExtensions.DynamicMessageType"> & {
  /**
   * @generated from field: int32 dynamic_field = 2100;
   */
  dynamicField: number;
};

/**
 * Describes the message proto2_unittest.TestDynamicExtensions.DynamicMessageType.
 * Use `create(TestDynamicExtensions_DynamicMessageTypeSchema)` to create a new message.
 */
export const TestDynamicExtensions_DynamicMessageTypeSchema: GenMessage<TestDynamicExtensions_DynamicMessageType> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 68, 0);

/**
 * @generated from enum proto2_unittest.TestDynamicExtensions.DynamicEnumType
 */
export enum TestDynamicExtensions_DynamicEnumType {
  /**
   * @generated from enum value: DYNAMIC_FOO = 2200;
   */
  DYNAMIC_FOO = 2200,

  /**
   * @generated from enum value: DYNAMIC_BAR = 2201;
   */
  DYNAMIC_BAR = 2201,

  /**
   * @generated from enum value: DYNAMIC_BAZ = 2202;
   */
  DYNAMIC_BAZ = 2202,
}

/**
 * Describes the enum proto2_unittest.TestDynamicExtensions.DynamicEnumType.
 */
export const TestDynamicExtensions_DynamicEnumTypeSchema: GenEnum<TestDynamicExtensions_DynamicEnumType> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 68, 0);

/**
 * @generated from message proto2_unittest.TestRepeatedString
 */
export type TestRepeatedString = Message<"proto2_unittest.TestRepeatedString"> & {
  /**
   * @generated from field: repeated string repeated_string1 = 1;
   */
  repeatedString1: string[];

  /**
   * @generated from field: repeated string repeated_string2 = 2;
   */
  repeatedString2: string[];

  /**
   * @generated from field: repeated bytes repeated_bytes11 = 11;
   */
  repeatedBytes11: Uint8Array[];

  /**
   * @generated from field: repeated bytes repeated_bytes12 = 12;
   */
  repeatedBytes12: Uint8Array[];
};

/**
 * Describes the message proto2_unittest.TestRepeatedString.
 * Use `create(TestRepeatedStringSchema)` to create a new message.
 */
export const TestRepeatedStringSchema: GenMessage<TestRepeatedString> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 69);

/**
 * @generated from message proto2_unittest.TestRepeatedScalarDifferentTagSizes
 */
export type TestRepeatedScalarDifferentTagSizes = Message<"proto2_unittest.TestRepeatedScalarDifferentTagSizes"> & {
  /**
   * Parsing repeated fixed size values used to fail. This message needs to be
   * used in order to get a tag of the right size; all of the repeated fields
   * in TestAllTypes didn't trigger the check.
   *
   * @generated from field: repeated fixed32 repeated_fixed32 = 12;
   */
  repeatedFixed32: number[];

  /**
   * Check for a varint type, just for good measure.
   *
   * @generated from field: repeated int32 repeated_int32 = 13;
   */
  repeatedInt32: number[];

  /**
   * These have two-byte tags.
   *
   * @generated from field: repeated fixed64 repeated_fixed64 = 2046;
   */
  repeatedFixed64: bigint[];

  /**
   * @generated from field: repeated int64 repeated_int64 = 2047;
   */
  repeatedInt64: bigint[];

  /**
   * Three byte tags.
   *
   * @generated from field: repeated float repeated_float = 262142;
   */
  repeatedFloat: number[];

  /**
   * @generated from field: repeated uint64 repeated_uint64 = 262143;
   */
  repeatedUint64: bigint[];
};

/**
 * Describes the message proto2_unittest.TestRepeatedScalarDifferentTagSizes.
 * Use `create(TestRepeatedScalarDifferentTagSizesSchema)` to create a new message.
 */
export const TestRepeatedScalarDifferentTagSizesSchema: GenMessage<TestRepeatedScalarDifferentTagSizes> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 70);

/**
 * Test that if an optional or required message/group field appears multiple
 * times in the input, they need to be merged.
 *
 * @generated from message proto2_unittest.TestParsingMerge
 */
export type TestParsingMerge = Message<"proto2_unittest.TestParsingMerge"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes required_all_types = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredAllTypes?: TestAllTypes;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 2;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 3;
   */
  repeatedAllTypes: TestAllTypes[];

  /**
   * @generated from field: proto2_unittest.TestParsingMerge.OptionalGroup optionalgroup = 10 [features.message_encoding = DELIMITED];
   */
  optionalgroup?: TestParsingMerge_OptionalGroup;

  /**
   * @generated from field: repeated proto2_unittest.TestParsingMerge.RepeatedGroup repeatedgroup = 20 [features.message_encoding = DELIMITED];
   */
  repeatedgroup: TestParsingMerge_RepeatedGroup[];
};

/**
 * Describes the message proto2_unittest.TestParsingMerge.
 * Use `create(TestParsingMergeSchema)` to create a new message.
 */
export const TestParsingMergeSchema: GenMessage<TestParsingMerge> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 71);

/**
 * RepeatedFieldsGenerator defines matching field types as TestParsingMerge,
 * except that all fields are repeated. In the tests, we will serialize the
 * RepeatedFieldsGenerator to bytes, and parse the bytes to TestParsingMerge.
 * Repeated fields in RepeatedFieldsGenerator are expected to be merged into
 * the corresponding required/optional fields in TestParsingMerge.
 *
 * @generated from message proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator
 */
export type TestParsingMerge_RepeatedFieldsGenerator = Message<"proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator"> & {
  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes field1 = 1;
   */
  field1: TestAllTypes[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes field2 = 2;
   */
  field2: TestAllTypes[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes field3 = 3;
   */
  field3: TestAllTypes[];

  /**
   * @generated from field: repeated proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group1 group1 = 10 [features.message_encoding = DELIMITED];
   */
  group1: TestParsingMerge_RepeatedFieldsGenerator_Group1[];

  /**
   * @generated from field: repeated proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group2 group2 = 20 [features.message_encoding = DELIMITED];
   */
  group2: TestParsingMerge_RepeatedFieldsGenerator_Group2[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes ext1 = 1000;
   */
  ext1: TestAllTypes[];

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes ext2 = 1001;
   */
  ext2: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.
 * Use `create(TestParsingMerge_RepeatedFieldsGeneratorSchema)` to create a new message.
 */
export const TestParsingMerge_RepeatedFieldsGeneratorSchema: GenMessage<TestParsingMerge_RepeatedFieldsGenerator> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 71, 0);

/**
 * @generated from message proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group1
 */
export type TestParsingMerge_RepeatedFieldsGenerator_Group1 = Message<"proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group1"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes field1 = 11;
   */
  field1?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group1.
 * Use `create(TestParsingMerge_RepeatedFieldsGenerator_Group1Schema)` to create a new message.
 */
export const TestParsingMerge_RepeatedFieldsGenerator_Group1Schema: GenMessage<TestParsingMerge_RepeatedFieldsGenerator_Group1> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 71, 0, 0);

/**
 * @generated from message proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group2
 */
export type TestParsingMerge_RepeatedFieldsGenerator_Group2 = Message<"proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group2"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes field1 = 21;
   */
  field1?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestParsingMerge.RepeatedFieldsGenerator.Group2.
 * Use `create(TestParsingMerge_RepeatedFieldsGenerator_Group2Schema)` to create a new message.
 */
export const TestParsingMerge_RepeatedFieldsGenerator_Group2Schema: GenMessage<TestParsingMerge_RepeatedFieldsGenerator_Group2> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 71, 0, 1);

/**
 * @generated from message proto2_unittest.TestParsingMerge.OptionalGroup
 */
export type TestParsingMerge_OptionalGroup = Message<"proto2_unittest.TestParsingMerge.OptionalGroup"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_group_all_types = 11;
   */
  optionalGroupAllTypes?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestParsingMerge.OptionalGroup.
 * Use `create(TestParsingMerge_OptionalGroupSchema)` to create a new message.
 */
export const TestParsingMerge_OptionalGroupSchema: GenMessage<TestParsingMerge_OptionalGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 71, 1);

/**
 * @generated from message proto2_unittest.TestParsingMerge.RepeatedGroup
 */
export type TestParsingMerge_RepeatedGroup = Message<"proto2_unittest.TestParsingMerge.RepeatedGroup"> & {
  /**
   * @generated from field: proto2_unittest.TestAllTypes repeated_group_all_types = 21;
   */
  repeatedGroupAllTypes?: TestAllTypes;
};

/**
 * Describes the message proto2_unittest.TestParsingMerge.RepeatedGroup.
 * Use `create(TestParsingMerge_RepeatedGroupSchema)` to create a new message.
 */
export const TestParsingMerge_RepeatedGroupSchema: GenMessage<TestParsingMerge_RepeatedGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 71, 2);

/**
 * @generated from extension: proto2_unittest.TestAllTypes optional_ext = 1000;
 */
export const TestParsingMerge_optional_ext: GenExtension<TestParsingMerge, TestAllTypes> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 71, 0);

/**
 * @generated from extension: repeated proto2_unittest.TestAllTypes repeated_ext = 1001;
 */
export const TestParsingMerge_repeated_ext: GenExtension<TestParsingMerge, TestAllTypes[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 71, 1);

/**
 * Test that the correct exception is thrown by parseFrom in a corner case
 * involving merging, extensions, and required fields.
 *
 * @generated from message proto2_unittest.TestMergeException
 */
export type TestMergeException = Message<"proto2_unittest.TestMergeException"> & {
  /**
   * @generated from field: proto2_unittest.TestAllExtensions all_extensions = 1;
   */
  allExtensions?: TestAllExtensions;
};

/**
 * Describes the message proto2_unittest.TestMergeException.
 * Use `create(TestMergeExceptionSchema)` to create a new message.
 */
export const TestMergeExceptionSchema: GenMessage<TestMergeException> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 72);

/**
 * @generated from message proto2_unittest.TestCommentInjectionMessage
 */
export type TestCommentInjectionMessage = Message<"proto2_unittest.TestCommentInjectionMessage"> & {
  /**
   * *\/ <- This should not close the generated doc comment
   *
   * @generated from field: string a = 1 [default = "*\/ <- Neither should this."];
   */
  a: string;
};

/**
 * Describes the message proto2_unittest.TestCommentInjectionMessage.
 * Use `create(TestCommentInjectionMessageSchema)` to create a new message.
 */
export const TestCommentInjectionMessageSchema: GenMessage<TestCommentInjectionMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 73);

/**
 * Used to check that the c++ code generator re-orders messages to reduce
 * padding.
 *
 * @generated from message proto2_unittest.TestMessageSize
 */
export type TestMessageSize = Message<"proto2_unittest.TestMessageSize"> & {
  /**
   * @generated from field: bool m1 = 1;
   */
  m1: boolean;

  /**
   * @generated from field: int64 m2 = 2;
   */
  m2: bigint;

  /**
   * @generated from field: bool m3 = 3;
   */
  m3: boolean;

  /**
   * @generated from field: string m4 = 4;
   */
  m4: string;

  /**
   * @generated from field: int32 m5 = 5;
   */
  m5: number;

  /**
   * @generated from field: int64 m6 = 6;
   */
  m6: bigint;
};

/**
 * Describes the message proto2_unittest.TestMessageSize.
 * Use `create(TestMessageSizeSchema)` to create a new message.
 */
export const TestMessageSizeSchema: GenMessage<TestMessageSize> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 74);

/**
 * @generated from message proto2_unittest.OpenEnumMessage
 */
export type OpenEnumMessage = Message<"proto2_unittest.OpenEnumMessage"> & {
  /**
   * @generated from field: proto2_unittest.OpenEnumMessage.TestEnum opt_open = 1;
   */
  optOpen: OpenEnumMessage_TestEnum;

  /**
   * @generated from field: proto2_unittest.ForeignEnum opt_closed = 2;
   */
  optClosed: ForeignEnum;

  /**
   * @generated from field: repeated proto2_unittest.OpenEnumMessage.TestEnum repeated_open = 3;
   */
  repeatedOpen: OpenEnumMessage_TestEnum[];

  /**
   * @generated from field: repeated proto2_unittest.ForeignEnum repeated_closed = 4;
   */
  repeatedClosed: ForeignEnum[];
};

/**
 * Describes the message proto2_unittest.OpenEnumMessage.
 * Use `create(OpenEnumMessageSchema)` to create a new message.
 */
export const OpenEnumMessageSchema: GenMessage<OpenEnumMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 75);

/**
 * @generated from enum proto2_unittest.OpenEnumMessage.TestEnum
 * @generated with option features.enum_type = OPEN
 */
export enum OpenEnumMessage_TestEnum {
  /**
   * @generated from enum value: UNKNOWN = 0;
   */
  UNKNOWN = 0,

  /**
   * @generated from enum value: FOO = 1;
   */
  FOO = 1,

  /**
   * @generated from enum value: BAR = 2;
   */
  BAR = 2,

  /**
   * @generated from enum value: BAZ = 3;
   */
  BAZ = 3,
}

/**
 * Describes the enum proto2_unittest.OpenEnumMessage.TestEnum.
 */
export const OpenEnumMessage_TestEnumSchema: GenEnum<OpenEnumMessage_TestEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 75, 0);

/**
 * Tests eager verification of a lazy message field.
 *
 * @generated from message proto2_unittest.TestEagerlyVerifiedLazyMessage
 */
export type TestEagerlyVerifiedLazyMessage = Message<"proto2_unittest.TestEagerlyVerifiedLazyMessage"> & {
  /**
   * @generated from field: proto2_unittest.TestEagerlyVerifiedLazyMessage.LazyMessage lazy_message = 1;
   */
  lazyMessage?: TestEagerlyVerifiedLazyMessage_LazyMessage;
};

/**
 * Describes the message proto2_unittest.TestEagerlyVerifiedLazyMessage.
 * Use `create(TestEagerlyVerifiedLazyMessageSchema)` to create a new message.
 */
export const TestEagerlyVerifiedLazyMessageSchema: GenMessage<TestEagerlyVerifiedLazyMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 76);

/**
 * @generated from message proto2_unittest.TestEagerlyVerifiedLazyMessage.LazyMessage
 */
export type TestEagerlyVerifiedLazyMessage_LazyMessage = Message<"proto2_unittest.TestEagerlyVerifiedLazyMessage.LazyMessage"> & {
  /**
   * @generated from field: bytes bytes_field = 1;
   */
  bytesField: Uint8Array;
};

/**
 * Describes the message proto2_unittest.TestEagerlyVerifiedLazyMessage.LazyMessage.
 * Use `create(TestEagerlyVerifiedLazyMessage_LazyMessageSchema)` to create a new message.
 */
export const TestEagerlyVerifiedLazyMessage_LazyMessageSchema: GenMessage<TestEagerlyVerifiedLazyMessage_LazyMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 76, 0);

/**
 * Test that RPC services work.
 *
 * @generated from message proto2_unittest.FooRequest
 */
export type FooRequest = Message<"proto2_unittest.FooRequest"> & {
};

/**
 * Describes the message proto2_unittest.FooRequest.
 * Use `create(FooRequestSchema)` to create a new message.
 */
export const FooRequestSchema: GenMessage<FooRequest> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 77);

/**
 * @generated from message proto2_unittest.FooResponse
 */
export type FooResponse = Message<"proto2_unittest.FooResponse"> & {
};

/**
 * Describes the message proto2_unittest.FooResponse.
 * Use `create(FooResponseSchema)` to create a new message.
 */
export const FooResponseSchema: GenMessage<FooResponse> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 78);

/**
 * @generated from message proto2_unittest.FooClientMessage
 */
export type FooClientMessage = Message<"proto2_unittest.FooClientMessage"> & {
};

/**
 * Describes the message proto2_unittest.FooClientMessage.
 * Use `create(FooClientMessageSchema)` to create a new message.
 */
export const FooClientMessageSchema: GenMessage<FooClientMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 79);

/**
 * @generated from message proto2_unittest.FooServerMessage
 */
export type FooServerMessage = Message<"proto2_unittest.FooServerMessage"> & {
};

/**
 * Describes the message proto2_unittest.FooServerMessage.
 * Use `create(FooServerMessageSchema)` to create a new message.
 */
export const FooServerMessageSchema: GenMessage<FooServerMessage> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 80);

/**
 * @generated from message proto2_unittest.BarRequest
 */
export type BarRequest = Message<"proto2_unittest.BarRequest"> & {
};

/**
 * Describes the message proto2_unittest.BarRequest.
 * Use `create(BarRequestSchema)` to create a new message.
 */
export const BarRequestSchema: GenMessage<BarRequest> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 81);

/**
 * @generated from message proto2_unittest.BarResponse
 */
export type BarResponse = Message<"proto2_unittest.BarResponse"> & {
};

/**
 * Describes the message proto2_unittest.BarResponse.
 * Use `create(BarResponseSchema)` to create a new message.
 */
export const BarResponseSchema: GenMessage<BarResponse> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 82);

/**
 * @generated from message proto2_unittest.TestJsonName
 */
export type TestJsonName = Message<"proto2_unittest.TestJsonName"> & {
  /**
   * @generated from field: int32 field_name1 = 1;
   */
  fieldName1: number;

  /**
   * @generated from field: int32 fieldName2 = 2;
   */
  fieldName2: number;

  /**
   * @generated from field: int32 FieldName3 = 3;
   */
  FieldName3: number;

  /**
   * @generated from field: int32 _field_name4 = 4;
   */
  FieldName4: number;

  /**
   * @generated from field: int32 FIELD_NAME5 = 5;
   */
  FIELDNAME5: number;

  /**
   * @generated from field: int32 field_name6 = 6 [json_name = "@type"];
   */
  fieldName6: number;

  /**
   * @generated from field: int32 fieldname7 = 7;
   */
  fieldname7: number;
};

/**
 * Describes the message proto2_unittest.TestJsonName.
 * Use `create(TestJsonNameSchema)` to create a new message.
 */
export const TestJsonNameSchema: GenMessage<TestJsonName> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 83);

/**
 * @generated from message proto2_unittest.TestHugeFieldNumbers
 */
export type TestHugeFieldNumbers = Message<"proto2_unittest.TestHugeFieldNumbers"> & {
  /**
   * @generated from field: int32 optional_int32 = 536870000;
   */
  optionalInt32: number;

  /**
   * @generated from field: int32 fixed_32 = 536870001;
   */
  fixed32: number;

  /**
   * @generated from field: repeated int32 repeated_int32 = 536870002;
   */
  repeatedInt32: number[];

  /**
   * @generated from field: repeated int32 packed_int32 = 536870003 [features.repeated_field_encoding = PACKED];
   */
  packedInt32: number[];

  /**
   * @generated from field: proto2_unittest.ForeignEnum optional_enum = 536870004;
   */
  optionalEnum: ForeignEnum;

  /**
   * @generated from field: string optional_string = 536870005;
   */
  optionalString: string;

  /**
   * @generated from field: bytes optional_bytes = 536870006;
   */
  optionalBytes: Uint8Array;

  /**
   * @generated from field: proto2_unittest.ForeignMessage optional_message = 536870007;
   */
  optionalMessage?: ForeignMessage;

  /**
   * @generated from field: proto2_unittest.TestHugeFieldNumbers.OptionalGroup optionalgroup = 536870008 [features.message_encoding = DELIMITED];
   */
  optionalgroup?: TestHugeFieldNumbers_OptionalGroup;

  /**
   * @generated from field: map<string, string> string_string_map = 536870010;
   */
  stringStringMap: { [key: string]: string };

  /**
   * @generated from oneof proto2_unittest.TestHugeFieldNumbers.oneof_field
   */
  oneofField: {
    /**
     * @generated from field: uint32 oneof_uint32 = 536870011;
     */
    value: number;
    case: "oneofUint32";
  } | {
    /**
     * @generated from field: proto2_unittest.TestAllTypes oneof_test_all_types = 536870012;
     */
    value: TestAllTypes;
    case: "oneofTestAllTypes";
  } | {
    /**
     * @generated from field: string oneof_string = 536870013;
     */
    value: string;
    case: "oneofString";
  } | {
    /**
     * @generated from field: bytes oneof_bytes = 536870014;
     */
    value: Uint8Array;
    case: "oneofBytes";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from field: bool optional_bool = 536870015;
   */
  optionalBool: boolean;

  /**
   * @generated from field: int64 optional_int64 = 536870016;
   */
  optionalInt64: bigint;

  /**
   * @generated from field: float optional_float = 536870017;
   */
  optionalFloat: number;

  /**
   * @generated from field: double optional_double = 536870018;
   */
  optionalDouble: number;

  /**
   * @generated from field: string optional_utf8_string = 536870019 [features.utf8_validation = VERIFY];
   */
  optionalUtf8String: string;

  /**
   * @generated from field: string optional_cord = 536870020 [features.utf8_validation = VERIFY];
   */
  optionalCord: string;

  /**
   * @generated from field: string optional_string_piece = 536870021 [features.utf8_validation = VERIFY];
   */
  optionalStringPiece: string;
};

/**
 * Describes the message proto2_unittest.TestHugeFieldNumbers.
 * Use `create(TestHugeFieldNumbersSchema)` to create a new message.
 */
export const TestHugeFieldNumbersSchema: GenMessage<TestHugeFieldNumbers> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 84);

/**
 * @generated from message proto2_unittest.TestHugeFieldNumbers.OptionalGroup
 */
export type TestHugeFieldNumbers_OptionalGroup = Message<"proto2_unittest.TestHugeFieldNumbers.OptionalGroup"> & {
  /**
   * @generated from field: int32 group_a = 536870009;
   */
  groupA: number;
};

/**
 * Describes the message proto2_unittest.TestHugeFieldNumbers.OptionalGroup.
 * Use `create(TestHugeFieldNumbers_OptionalGroupSchema)` to create a new message.
 */
export const TestHugeFieldNumbers_OptionalGroupSchema: GenMessage<TestHugeFieldNumbers_OptionalGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 84, 0);

/**
 * @generated from message proto2_unittest.TestExtensionInsideTable
 */
export type TestExtensionInsideTable = Message<"proto2_unittest.TestExtensionInsideTable"> & {
  /**
   * @generated from field: int32 field1 = 1;
   */
  field1: number;

  /**
   * @generated from field: int32 field2 = 2;
   */
  field2: number;

  /**
   * @generated from field: int32 field3 = 3;
   */
  field3: number;

  /**
   * @generated from field: int32 field4 = 4;
   */
  field4: number;

  /**
   * @generated from field: int32 field6 = 6;
   */
  field6: number;

  /**
   * @generated from field: int32 field7 = 7;
   */
  field7: number;

  /**
   * @generated from field: int32 field8 = 8;
   */
  field8: number;

  /**
   * @generated from field: int32 field9 = 9;
   */
  field9: number;

  /**
   * @generated from field: int32 field10 = 10;
   */
  field10: number;
};

/**
 * Describes the message proto2_unittest.TestExtensionInsideTable.
 * Use `create(TestExtensionInsideTableSchema)` to create a new message.
 */
export const TestExtensionInsideTableSchema: GenMessage<TestExtensionInsideTable> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 85);

/**
 * NOTE: Intentionally nested to mirror go/glep.
 *
 * @generated from message proto2_unittest.TestNestedGroupExtensionOuter
 */
export type TestNestedGroupExtensionOuter = Message<"proto2_unittest.TestNestedGroupExtensionOuter"> & {
  /**
   * @generated from field: proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup layer1optionalgroup = 1 [features.message_encoding = DELIMITED];
   */
  layer1optionalgroup?: TestNestedGroupExtensionOuter_Layer1OptionalGroup;
};

/**
 * Describes the message proto2_unittest.TestNestedGroupExtensionOuter.
 * Use `create(TestNestedGroupExtensionOuterSchema)` to create a new message.
 */
export const TestNestedGroupExtensionOuterSchema: GenMessage<TestNestedGroupExtensionOuter> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 86);

/**
 * @generated from message proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup
 */
export type TestNestedGroupExtensionOuter_Layer1OptionalGroup = Message<"proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup"> & {
  /**
   * @generated from field: repeated proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2RepeatedGroup layer2repeatedgroup = 2 [features.message_encoding = DELIMITED];
   */
  layer2repeatedgroup: TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2RepeatedGroup[];

  /**
   * @generated from field: repeated proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2AnotherOptionalRepeatedGroup layer2anotheroptionalrepeatedgroup = 4 [features.message_encoding = DELIMITED];
   */
  layer2anotheroptionalrepeatedgroup: TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2AnotherOptionalRepeatedGroup[];
};

/**
 * Describes the message proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.
 * Use `create(TestNestedGroupExtensionOuter_Layer1OptionalGroupSchema)` to create a new message.
 */
export const TestNestedGroupExtensionOuter_Layer1OptionalGroupSchema: GenMessage<TestNestedGroupExtensionOuter_Layer1OptionalGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 86, 0);

/**
 * @generated from message proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2RepeatedGroup
 */
export type TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2RepeatedGroup = Message<"proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2RepeatedGroup"> & {
  /**
   * @generated from field: string another_field = 6;
   */
  anotherField: string;
};

/**
 * Describes the message proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2RepeatedGroup.
 * Use `create(TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2RepeatedGroupSchema)` to create a new message.
 */
export const TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2RepeatedGroupSchema: GenMessage<TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2RepeatedGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 86, 0, 0);

/**
 * @generated from message proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2AnotherOptionalRepeatedGroup
 */
export type TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2AnotherOptionalRepeatedGroup = Message<"proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2AnotherOptionalRepeatedGroup"> & {
  /**
   * @generated from field: string but_why_tho = 5;
   */
  butWhyTho: string;
};

/**
 * Describes the message proto2_unittest.TestNestedGroupExtensionOuter.Layer1OptionalGroup.Layer2AnotherOptionalRepeatedGroup.
 * Use `create(TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2AnotherOptionalRepeatedGroupSchema)` to create a new message.
 */
export const TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2AnotherOptionalRepeatedGroupSchema: GenMessage<TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2AnotherOptionalRepeatedGroup> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 86, 0, 1);

/**
 * @generated from message proto2_unittest.TestNestedGroupExtensionInnerExtension
 */
export type TestNestedGroupExtensionInnerExtension = Message<"proto2_unittest.TestNestedGroupExtensionInnerExtension"> & {
  /**
   * @generated from field: string inner_name = 1;
   */
  innerName: string;
};

/**
 * Describes the message proto2_unittest.TestNestedGroupExtensionInnerExtension.
 * Use `create(TestNestedGroupExtensionInnerExtensionSchema)` to create a new message.
 */
export const TestNestedGroupExtensionInnerExtensionSchema: GenMessage<TestNestedGroupExtensionInnerExtension> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 87);

/**
 * @generated from message proto2_unittest.TestExtensionRangeSerialize
 */
export type TestExtensionRangeSerialize = Message<"proto2_unittest.TestExtensionRangeSerialize"> & {
  /**
   * @generated from field: int32 foo_one = 1;
   */
  fooOne: number;

  /**
   * @generated from field: int32 foo_two = 6;
   */
  fooTwo: number;

  /**
   * @generated from field: int32 foo_three = 7;
   */
  fooThree: number;

  /**
   * @generated from field: int32 foo_four = 13;
   */
  fooFour: number;
};

/**
 * Describes the message proto2_unittest.TestExtensionRangeSerialize.
 * Use `create(TestExtensionRangeSerializeSchema)` to create a new message.
 */
export const TestExtensionRangeSerializeSchema: GenMessage<TestExtensionRangeSerialize> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 88);

/**
 * @generated from extension: int32 bar_one = 2;
 */
export const TestExtensionRangeSerialize_bar_one: GenExtension<TestExtensionRangeSerialize, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 88, 0);

/**
 * @generated from extension: int32 bar_two = 4;
 */
export const TestExtensionRangeSerialize_bar_two: GenExtension<TestExtensionRangeSerialize, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 88, 1);

/**
 * @generated from extension: int32 bar_three = 10;
 */
export const TestExtensionRangeSerialize_bar_three: GenExtension<TestExtensionRangeSerialize, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 88, 2);

/**
 * @generated from extension: int32 bar_four = 15;
 */
export const TestExtensionRangeSerialize_bar_four: GenExtension<TestExtensionRangeSerialize, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 88, 3);

/**
 * @generated from extension: int32 bar_five = 19;
 */
export const TestExtensionRangeSerialize_bar_five: GenExtension<TestExtensionRangeSerialize, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 88, 4);

/**
 * @generated from message proto2_unittest.TestVerifyInt32Simple
 */
export type TestVerifyInt32Simple = Message<"proto2_unittest.TestVerifyInt32Simple"> & {
  /**
   * @generated from field: int32 optional_int32_1 = 1;
   */
  optionalInt321: number;

  /**
   * @generated from field: int32 optional_int32_2 = 2;
   */
  optionalInt322: number;

  /**
   * @generated from field: int32 optional_int32_63 = 63;
   */
  optionalInt3263: number;

  /**
   * @generated from field: int32 optional_int32_64 = 64;
   */
  optionalInt3264: number;
};

/**
 * Describes the message proto2_unittest.TestVerifyInt32Simple.
 * Use `create(TestVerifyInt32SimpleSchema)` to create a new message.
 */
export const TestVerifyInt32SimpleSchema: GenMessage<TestVerifyInt32Simple> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 89);

/**
 * @generated from message proto2_unittest.TestVerifyInt32
 */
export type TestVerifyInt32 = Message<"proto2_unittest.TestVerifyInt32"> & {
  /**
   * @generated from field: int32 optional_int32_1 = 1;
   */
  optionalInt321: number;

  /**
   * @generated from field: int32 optional_int32_2 = 2;
   */
  optionalInt322: number;

  /**
   * @generated from field: int32 optional_int32_63 = 63;
   */
  optionalInt3263: number;

  /**
   * @generated from field: int32 optional_int32_64 = 64;
   */
  optionalInt3264: number;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyInt32.
 * Use `create(TestVerifyInt32Schema)` to create a new message.
 */
export const TestVerifyInt32Schema: GenMessage<TestVerifyInt32> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 90);

/**
 * @generated from message proto2_unittest.TestVerifyMostlyInt32
 */
export type TestVerifyMostlyInt32 = Message<"proto2_unittest.TestVerifyMostlyInt32"> & {
  /**
   * @generated from field: int64 optional_int64_30 = 30;
   */
  optionalInt6430: bigint;

  /**
   * @generated from field: int32 optional_int32_1 = 1;
   */
  optionalInt321: number;

  /**
   * @generated from field: int32 optional_int32_2 = 2;
   */
  optionalInt322: number;

  /**
   * @generated from field: int32 optional_int32_3 = 3;
   */
  optionalInt323: number;

  /**
   * @generated from field: int32 optional_int32_4 = 4;
   */
  optionalInt324: number;

  /**
   * @generated from field: int32 optional_int32_63 = 63;
   */
  optionalInt3263: number;

  /**
   * @generated from field: int32 optional_int32_64 = 64;
   */
  optionalInt3264: number;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyMostlyInt32.
 * Use `create(TestVerifyMostlyInt32Schema)` to create a new message.
 */
export const TestVerifyMostlyInt32Schema: GenMessage<TestVerifyMostlyInt32> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 91);

/**
 * @generated from message proto2_unittest.TestVerifyMostlyInt32BigFieldNumber
 */
export type TestVerifyMostlyInt32BigFieldNumber = Message<"proto2_unittest.TestVerifyMostlyInt32BigFieldNumber"> & {
  /**
   * @generated from field: int64 optional_int64_30 = 30;
   */
  optionalInt6430: bigint;

  /**
   * @generated from field: int32 optional_int32_300 = 300;
   */
  optionalInt32300: number;

  /**
   * @generated from field: int32 optional_int32_1 = 1;
   */
  optionalInt321: number;

  /**
   * @generated from field: int32 optional_int32_2 = 2;
   */
  optionalInt322: number;

  /**
   * @generated from field: int32 optional_int32_3 = 3;
   */
  optionalInt323: number;

  /**
   * @generated from field: int32 optional_int32_4 = 4;
   */
  optionalInt324: number;

  /**
   * @generated from field: int32 optional_int32_63 = 63;
   */
  optionalInt3263: number;

  /**
   * @generated from field: int32 optional_int32_64 = 64;
   */
  optionalInt3264: number;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyMostlyInt32BigFieldNumber.
 * Use `create(TestVerifyMostlyInt32BigFieldNumberSchema)` to create a new message.
 */
export const TestVerifyMostlyInt32BigFieldNumberSchema: GenMessage<TestVerifyMostlyInt32BigFieldNumber> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 92);

/**
 * @generated from message proto2_unittest.TestVerifyUint32Simple
 */
export type TestVerifyUint32Simple = Message<"proto2_unittest.TestVerifyUint32Simple"> & {
  /**
   * @generated from field: uint32 optional_uint32_1 = 1;
   */
  optionalUint321: number;

  /**
   * @generated from field: uint32 optional_uint32_2 = 2;
   */
  optionalUint322: number;

  /**
   * @generated from field: uint32 optional_uint32_63 = 63;
   */
  optionalUint3263: number;

  /**
   * @generated from field: uint32 optional_uint32_64 = 64;
   */
  optionalUint3264: number;
};

/**
 * Describes the message proto2_unittest.TestVerifyUint32Simple.
 * Use `create(TestVerifyUint32SimpleSchema)` to create a new message.
 */
export const TestVerifyUint32SimpleSchema: GenMessage<TestVerifyUint32Simple> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 93);

/**
 * @generated from message proto2_unittest.TestVerifyUint32
 */
export type TestVerifyUint32 = Message<"proto2_unittest.TestVerifyUint32"> & {
  /**
   * @generated from field: uint32 optional_uint32_1 = 1;
   */
  optionalUint321: number;

  /**
   * @generated from field: uint32 optional_uint32_2 = 2;
   */
  optionalUint322: number;

  /**
   * @generated from field: uint32 optional_uint32_63 = 63;
   */
  optionalUint3263: number;

  /**
   * @generated from field: uint32 optional_uint32_64 = 64;
   */
  optionalUint3264: number;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyUint32.
 * Use `create(TestVerifyUint32Schema)` to create a new message.
 */
export const TestVerifyUint32Schema: GenMessage<TestVerifyUint32> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 94);

/**
 * @generated from message proto2_unittest.TestVerifyOneUint32
 */
export type TestVerifyOneUint32 = Message<"proto2_unittest.TestVerifyOneUint32"> & {
  /**
   * @generated from field: uint32 optional_uint32_1 = 1;
   */
  optionalUint321: number;

  /**
   * @generated from field: int32 optional_int32_2 = 2;
   */
  optionalInt322: number;

  /**
   * @generated from field: int32 optional_int32_63 = 63;
   */
  optionalInt3263: number;

  /**
   * @generated from field: int32 optional_int32_64 = 64;
   */
  optionalInt3264: number;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyOneUint32.
 * Use `create(TestVerifyOneUint32Schema)` to create a new message.
 */
export const TestVerifyOneUint32Schema: GenMessage<TestVerifyOneUint32> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 95);

/**
 * @generated from message proto2_unittest.TestVerifyOneInt32BigFieldNumber
 */
export type TestVerifyOneInt32BigFieldNumber = Message<"proto2_unittest.TestVerifyOneInt32BigFieldNumber"> & {
  /**
   * @generated from field: int32 optional_int32_65 = 65;
   */
  optionalInt3265: number;

  /**
   * @generated from field: int64 optional_int64_1 = 1;
   */
  optionalInt641: bigint;

  /**
   * @generated from field: int64 optional_int64_2 = 2;
   */
  optionalInt642: bigint;

  /**
   * @generated from field: int64 optional_int64_63 = 63;
   */
  optionalInt6463: bigint;

  /**
   * @generated from field: int64 optional_int64_64 = 64;
   */
  optionalInt6464: bigint;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyOneInt32BigFieldNumber.
 * Use `create(TestVerifyOneInt32BigFieldNumberSchema)` to create a new message.
 */
export const TestVerifyOneInt32BigFieldNumberSchema: GenMessage<TestVerifyOneInt32BigFieldNumber> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 96);

/**
 * @generated from message proto2_unittest.TestVerifyInt32BigFieldNumber
 */
export type TestVerifyInt32BigFieldNumber = Message<"proto2_unittest.TestVerifyInt32BigFieldNumber"> & {
  /**
   * @generated from field: int32 optional_int32_1000 = 1000;
   */
  optionalInt321000: number;

  /**
   * @generated from field: int32 optional_int32_65 = 65;
   */
  optionalInt3265: number;

  /**
   * @generated from field: int32 optional_int32_1 = 1;
   */
  optionalInt321: number;

  /**
   * @generated from field: int32 optional_int32_2 = 2;
   */
  optionalInt322: number;

  /**
   * @generated from field: int32 optional_int32_63 = 63;
   */
  optionalInt3263: number;

  /**
   * @generated from field: int32 optional_int32_64 = 64;
   */
  optionalInt3264: number;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyInt32BigFieldNumber.
 * Use `create(TestVerifyInt32BigFieldNumberSchema)` to create a new message.
 */
export const TestVerifyInt32BigFieldNumberSchema: GenMessage<TestVerifyInt32BigFieldNumber> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 97);

/**
 * @generated from message proto2_unittest.TestVerifyUint32BigFieldNumber
 */
export type TestVerifyUint32BigFieldNumber = Message<"proto2_unittest.TestVerifyUint32BigFieldNumber"> & {
  /**
   * @generated from field: uint32 optional_uint32_1000 = 1000;
   */
  optionalUint321000: number;

  /**
   * @generated from field: uint32 optional_uint32_65 = 65;
   */
  optionalUint3265: number;

  /**
   * @generated from field: uint32 optional_uint32_1 = 1;
   */
  optionalUint321: number;

  /**
   * @generated from field: uint32 optional_uint32_2 = 2;
   */
  optionalUint322: number;

  /**
   * @generated from field: uint32 optional_uint32_63 = 63;
   */
  optionalUint3263: number;

  /**
   * @generated from field: uint32 optional_uint32_64 = 64;
   */
  optionalUint3264: number;

  /**
   * @generated from field: proto2_unittest.TestAllTypes optional_all_types = 9;
   */
  optionalAllTypes?: TestAllTypes;

  /**
   * @generated from field: repeated proto2_unittest.TestAllTypes repeated_all_types = 10;
   */
  repeatedAllTypes: TestAllTypes[];
};

/**
 * Describes the message proto2_unittest.TestVerifyUint32BigFieldNumber.
 * Use `create(TestVerifyUint32BigFieldNumberSchema)` to create a new message.
 */
export const TestVerifyUint32BigFieldNumberSchema: GenMessage<TestVerifyUint32BigFieldNumber> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 98);

/**
 * @generated from message proto2_unittest.TestVerifyBigFieldNumberUint32
 */
export type TestVerifyBigFieldNumberUint32 = Message<"proto2_unittest.TestVerifyBigFieldNumberUint32"> & {
  /**
   * @generated from field: proto2_unittest.TestVerifyBigFieldNumberUint32.Nested optional_nested = 1;
   */
  optionalNested?: TestVerifyBigFieldNumberUint32_Nested;
};

/**
 * Describes the message proto2_unittest.TestVerifyBigFieldNumberUint32.
 * Use `create(TestVerifyBigFieldNumberUint32Schema)` to create a new message.
 */
export const TestVerifyBigFieldNumberUint32Schema: GenMessage<TestVerifyBigFieldNumberUint32> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 99);

/**
 * @generated from message proto2_unittest.TestVerifyBigFieldNumberUint32.Nested
 */
export type TestVerifyBigFieldNumberUint32_Nested = Message<"proto2_unittest.TestVerifyBigFieldNumberUint32.Nested"> & {
  /**
   * @generated from field: uint32 optional_uint32_5000 = 5000;
   */
  optionalUint325000: number;

  /**
   * @generated from field: uint32 optional_uint32_1000 = 1000;
   */
  optionalUint321000: number;

  /**
   * @generated from field: uint32 optional_uint32_66 = 66;
   */
  optionalUint3266: number;

  /**
   * @generated from field: uint32 optional_uint32_65 = 65;
   */
  optionalUint3265: number;

  /**
   * @generated from field: uint32 optional_uint32_1 = 1;
   */
  optionalUint321: number;

  /**
   * @generated from field: uint32 optional_uint32_2 = 2;
   */
  optionalUint322: number;

  /**
   * @generated from field: uint32 optional_uint32_63 = 63;
   */
  optionalUint3263: number;

  /**
   * @generated from field: uint32 optional_uint32_64 = 64;
   */
  optionalUint3264: number;

  /**
   * @generated from field: proto2_unittest.TestVerifyBigFieldNumberUint32.Nested optional_nested = 9;
   */
  optionalNested?: TestVerifyBigFieldNumberUint32_Nested;

  /**
   * @generated from field: repeated proto2_unittest.TestVerifyBigFieldNumberUint32.Nested repeated_nested = 10;
   */
  repeatedNested: TestVerifyBigFieldNumberUint32_Nested[];
};

/**
 * Describes the message proto2_unittest.TestVerifyBigFieldNumberUint32.Nested.
 * Use `create(TestVerifyBigFieldNumberUint32_NestedSchema)` to create a new message.
 */
export const TestVerifyBigFieldNumberUint32_NestedSchema: GenMessage<TestVerifyBigFieldNumberUint32_Nested> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 99, 0);

/**
 * This message contains different kind of enums to exercise the different
 * parsers in table-driven.
 *
 * @generated from message proto2_unittest.EnumParseTester
 */
export type EnumParseTester = Message<"proto2_unittest.EnumParseTester"> & {
  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqSmall0 optional_seq_small_0_lowfield = 1;
   */
  optionalSeqSmall0Lowfield: EnumParseTester_SeqSmall0;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqSmall0 optional_seq_small_0_midfield = 1001;
   */
  optionalSeqSmall0Midfield: EnumParseTester_SeqSmall0;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqSmall0 optional_seq_small_0_hifield = 1000001;
   */
  optionalSeqSmall0Hifield: EnumParseTester_SeqSmall0;

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall0 repeated_seq_small_0_lowfield = 2;
   */
  repeatedSeqSmall0Lowfield: EnumParseTester_SeqSmall0[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall0 repeated_seq_small_0_midfield = 1002;
   */
  repeatedSeqSmall0Midfield: EnumParseTester_SeqSmall0[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall0 repeated_seq_small_0_hifield = 1000002;
   */
  repeatedSeqSmall0Hifield: EnumParseTester_SeqSmall0[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall0 packed_seq_small_0_lowfield = 3 [features.repeated_field_encoding = PACKED];
   */
  packedSeqSmall0Lowfield: EnumParseTester_SeqSmall0[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall0 packed_seq_small_0_midfield = 1003 [features.repeated_field_encoding = PACKED];
   */
  packedSeqSmall0Midfield: EnumParseTester_SeqSmall0[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall0 packed_seq_small_0_hifield = 1000003 [features.repeated_field_encoding = PACKED];
   */
  packedSeqSmall0Hifield: EnumParseTester_SeqSmall0[];

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqSmall1 optional_seq_small_1_lowfield = 4;
   */
  optionalSeqSmall1Lowfield: EnumParseTester_SeqSmall1;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqSmall1 optional_seq_small_1_midfield = 1004;
   */
  optionalSeqSmall1Midfield: EnumParseTester_SeqSmall1;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqSmall1 optional_seq_small_1_hifield = 1000004;
   */
  optionalSeqSmall1Hifield: EnumParseTester_SeqSmall1;

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall1 repeated_seq_small_1_lowfield = 5;
   */
  repeatedSeqSmall1Lowfield: EnumParseTester_SeqSmall1[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall1 repeated_seq_small_1_midfield = 1005;
   */
  repeatedSeqSmall1Midfield: EnumParseTester_SeqSmall1[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall1 repeated_seq_small_1_hifield = 1000005;
   */
  repeatedSeqSmall1Hifield: EnumParseTester_SeqSmall1[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall1 packed_seq_small_1_lowfield = 6 [features.repeated_field_encoding = PACKED];
   */
  packedSeqSmall1Lowfield: EnumParseTester_SeqSmall1[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall1 packed_seq_small_1_midfield = 1006 [features.repeated_field_encoding = PACKED];
   */
  packedSeqSmall1Midfield: EnumParseTester_SeqSmall1[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqSmall1 packed_seq_small_1_hifield = 1000006 [features.repeated_field_encoding = PACKED];
   */
  packedSeqSmall1Hifield: EnumParseTester_SeqSmall1[];

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqLarge optional_seq_large_lowfield = 7;
   */
  optionalSeqLargeLowfield: EnumParseTester_SeqLarge;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqLarge optional_seq_large_midfield = 1007;
   */
  optionalSeqLargeMidfield: EnumParseTester_SeqLarge;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.SeqLarge optional_seq_large_hifield = 1000007;
   */
  optionalSeqLargeHifield: EnumParseTester_SeqLarge;

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqLarge repeated_seq_large_lowfield = 8;
   */
  repeatedSeqLargeLowfield: EnumParseTester_SeqLarge[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqLarge repeated_seq_large_midfield = 1008;
   */
  repeatedSeqLargeMidfield: EnumParseTester_SeqLarge[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqLarge repeated_seq_large_hifield = 1000008;
   */
  repeatedSeqLargeHifield: EnumParseTester_SeqLarge[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqLarge packed_seq_large_lowfield = 9 [features.repeated_field_encoding = PACKED];
   */
  packedSeqLargeLowfield: EnumParseTester_SeqLarge[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqLarge packed_seq_large_midfield = 1009 [features.repeated_field_encoding = PACKED];
   */
  packedSeqLargeMidfield: EnumParseTester_SeqLarge[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.SeqLarge packed_seq_large_hifield = 1000009 [features.repeated_field_encoding = PACKED];
   */
  packedSeqLargeHifield: EnumParseTester_SeqLarge[];

  /**
   * @generated from field: proto2_unittest.EnumParseTester.Arbitrary optional_arbitrary_lowfield = 10;
   */
  optionalArbitraryLowfield: EnumParseTester_Arbitrary;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.Arbitrary optional_arbitrary_midfield = 1010;
   */
  optionalArbitraryMidfield: EnumParseTester_Arbitrary;

  /**
   * @generated from field: proto2_unittest.EnumParseTester.Arbitrary optional_arbitrary_hifield = 1000010;
   */
  optionalArbitraryHifield: EnumParseTester_Arbitrary;

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.Arbitrary repeated_arbitrary_lowfield = 11;
   */
  repeatedArbitraryLowfield: EnumParseTester_Arbitrary[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.Arbitrary repeated_arbitrary_midfield = 1011;
   */
  repeatedArbitraryMidfield: EnumParseTester_Arbitrary[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.Arbitrary repeated_arbitrary_hifield = 1000011;
   */
  repeatedArbitraryHifield: EnumParseTester_Arbitrary[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.Arbitrary packed_arbitrary_lowfield = 12 [features.repeated_field_encoding = PACKED];
   */
  packedArbitraryLowfield: EnumParseTester_Arbitrary[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.Arbitrary packed_arbitrary_midfield = 1012 [features.repeated_field_encoding = PACKED];
   */
  packedArbitraryMidfield: EnumParseTester_Arbitrary[];

  /**
   * @generated from field: repeated proto2_unittest.EnumParseTester.Arbitrary packed_arbitrary_hifield = 1000012 [features.repeated_field_encoding = PACKED];
   */
  packedArbitraryHifield: EnumParseTester_Arbitrary[];

  /**
   * An arbitrary field we can append to to break the runs of repeated fields.
   *
   * @generated from field: int32 other_field = 99;
   */
  otherField: number;
};

/**
 * Describes the message proto2_unittest.EnumParseTester.
 * Use `create(EnumParseTesterSchema)` to create a new message.
 */
export const EnumParseTesterSchema: GenMessage<EnumParseTester> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 100);

/**
 * @generated from enum proto2_unittest.EnumParseTester.SeqSmall0
 */
export enum EnumParseTester_SeqSmall0 {
  /**
   * @generated from enum value: SEQ_SMALL_0_DEFAULT = 0;
   */
  SEQ_SMALL_0_DEFAULT = 0,

  /**
   * @generated from enum value: SEQ_SMALL_0_1 = 1;
   */
  SEQ_SMALL_0_1 = 1,

  /**
   * @generated from enum value: SEQ_SMALL_0_2 = 2;
   */
  SEQ_SMALL_0_2 = 2,
}

/**
 * Describes the enum proto2_unittest.EnumParseTester.SeqSmall0.
 */
export const EnumParseTester_SeqSmall0Schema: GenEnum<EnumParseTester_SeqSmall0> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 100, 0);

/**
 * @generated from enum proto2_unittest.EnumParseTester.SeqSmall1
 */
export enum EnumParseTester_SeqSmall1 {
  /**
   * @generated from enum value: SEQ_SMALL_1_DEFAULT = 1;
   */
  SEQ_SMALL_1_DEFAULT = 1,

  /**
   * @generated from enum value: SEQ_SMALL_1_2 = 2;
   */
  SEQ_SMALL_1_2 = 2,

  /**
   * @generated from enum value: SEQ_SMALL_1_3 = 3;
   */
  SEQ_SMALL_1_3 = 3,
}

/**
 * Describes the enum proto2_unittest.EnumParseTester.SeqSmall1.
 */
export const EnumParseTester_SeqSmall1Schema: GenEnum<EnumParseTester_SeqSmall1> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 100, 1);

/**
 * @generated from enum proto2_unittest.EnumParseTester.SeqLarge
 */
export enum EnumParseTester_SeqLarge {
  /**
   * @generated from enum value: SEQ_LARGE_DEFAULT = -1;
   */
  SEQ_LARGE_DEFAULT = -1,

  /**
   * @generated from enum value: SEQ_LARGE_0 = 0;
   */
  SEQ_LARGE_0 = 0,

  /**
   * @generated from enum value: SEQ_LARGE_1 = 1;
   */
  SEQ_LARGE_1 = 1,

  /**
   * @generated from enum value: SEQ_LARGE_2 = 2;
   */
  SEQ_LARGE_2 = 2,

  /**
   * @generated from enum value: SEQ_LARGE_3 = 3;
   */
  SEQ_LARGE_3 = 3,

  /**
   * @generated from enum value: SEQ_LARGE_4 = 4;
   */
  SEQ_LARGE_4 = 4,

  /**
   * @generated from enum value: SEQ_LARGE_5 = 5;
   */
  SEQ_LARGE_5 = 5,

  /**
   * @generated from enum value: SEQ_LARGE_6 = 6;
   */
  SEQ_LARGE_6 = 6,

  /**
   * @generated from enum value: SEQ_LARGE_7 = 7;
   */
  SEQ_LARGE_7 = 7,

  /**
   * @generated from enum value: SEQ_LARGE_8 = 8;
   */
  SEQ_LARGE_8 = 8,

  /**
   * @generated from enum value: SEQ_LARGE_9 = 9;
   */
  SEQ_LARGE_9 = 9,

  /**
   * @generated from enum value: SEQ_LARGE_10 = 10;
   */
  SEQ_LARGE_10 = 10,

  /**
   * @generated from enum value: SEQ_LARGE_11 = 11;
   */
  SEQ_LARGE_11 = 11,

  /**
   * @generated from enum value: SEQ_LARGE_12 = 12;
   */
  SEQ_LARGE_12 = 12,

  /**
   * @generated from enum value: SEQ_LARGE_13 = 13;
   */
  SEQ_LARGE_13 = 13,

  /**
   * @generated from enum value: SEQ_LARGE_14 = 14;
   */
  SEQ_LARGE_14 = 14,

  /**
   * @generated from enum value: SEQ_LARGE_15 = 15;
   */
  SEQ_LARGE_15 = 15,

  /**
   * @generated from enum value: SEQ_LARGE_16 = 16;
   */
  SEQ_LARGE_16 = 16,

  /**
   * @generated from enum value: SEQ_LARGE_17 = 17;
   */
  SEQ_LARGE_17 = 17,

  /**
   * @generated from enum value: SEQ_LARGE_18 = 18;
   */
  SEQ_LARGE_18 = 18,

  /**
   * @generated from enum value: SEQ_LARGE_19 = 19;
   */
  SEQ_LARGE_19 = 19,

  /**
   * @generated from enum value: SEQ_LARGE_20 = 20;
   */
  SEQ_LARGE_20 = 20,

  /**
   * @generated from enum value: SEQ_LARGE_21 = 21;
   */
  SEQ_LARGE_21 = 21,

  /**
   * @generated from enum value: SEQ_LARGE_22 = 22;
   */
  SEQ_LARGE_22 = 22,

  /**
   * @generated from enum value: SEQ_LARGE_23 = 23;
   */
  SEQ_LARGE_23 = 23,

  /**
   * @generated from enum value: SEQ_LARGE_24 = 24;
   */
  SEQ_LARGE_24 = 24,

  /**
   * @generated from enum value: SEQ_LARGE_25 = 25;
   */
  SEQ_LARGE_25 = 25,

  /**
   * @generated from enum value: SEQ_LARGE_26 = 26;
   */
  SEQ_LARGE_26 = 26,

  /**
   * @generated from enum value: SEQ_LARGE_27 = 27;
   */
  SEQ_LARGE_27 = 27,

  /**
   * @generated from enum value: SEQ_LARGE_28 = 28;
   */
  SEQ_LARGE_28 = 28,

  /**
   * @generated from enum value: SEQ_LARGE_29 = 29;
   */
  SEQ_LARGE_29 = 29,

  /**
   * @generated from enum value: SEQ_LARGE_30 = 30;
   */
  SEQ_LARGE_30 = 30,

  /**
   * @generated from enum value: SEQ_LARGE_31 = 31;
   */
  SEQ_LARGE_31 = 31,

  /**
   * @generated from enum value: SEQ_LARGE_32 = 32;
   */
  SEQ_LARGE_32 = 32,

  /**
   * @generated from enum value: SEQ_LARGE_33 = 33;
   */
  SEQ_LARGE_33 = 33,
}

/**
 * Describes the enum proto2_unittest.EnumParseTester.SeqLarge.
 */
export const EnumParseTester_SeqLargeSchema: GenEnum<EnumParseTester_SeqLarge> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 100, 2);

/**
 * @generated from enum proto2_unittest.EnumParseTester.Arbitrary
 */
export enum EnumParseTester_Arbitrary {
  /**
   * @generated from enum value: ARBITRARY_DEFAULT = -123123;
   */
  ARBITRARY_DEFAULT = -123123,

  /**
   * @generated from enum value: ARBITRARY_1 = -123;
   */
  ARBITRARY_1 = -123,

  /**
   * @generated from enum value: ARBITRARY_2 = 213;
   */
  ARBITRARY_2 = 213,

  /**
   * @generated from enum value: ARBITRARY_3 = 213213;
   */
  ARBITRARY_3 = 213213,

  /**
   * @generated from enum value: ARBITRARY_MIN = -2147483648;
   */
  ARBITRARY_MIN = -2147483648,

  /**
   * @generated from enum value: ARBITRARY_MAX = 2147483647;
   */
  ARBITRARY_MAX = 2147483647,
}

/**
 * Describes the enum proto2_unittest.EnumParseTester.Arbitrary.
 */
export const EnumParseTester_ArbitrarySchema: GenEnum<EnumParseTester_Arbitrary> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 100, 3);

/**
 * @generated from extension: proto2_unittest.EnumParseTester.Arbitrary optional_arbitrary_ext = 2000000;
 */
export const EnumParseTester_optional_arbitrary_ext: GenExtension<EnumParseTester, EnumParseTester_Arbitrary> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 100, 0);

/**
 * @generated from extension: repeated proto2_unittest.EnumParseTester.Arbitrary repeated_arbitrary_ext = 2000001;
 */
export const EnumParseTester_repeated_arbitrary_ext: GenExtension<EnumParseTester, EnumParseTester_Arbitrary[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 100, 1);

/**
 * @generated from extension: repeated proto2_unittest.EnumParseTester.Arbitrary packed_arbitrary_ext = 2000002 [features.repeated_field_encoding = PACKED];
 */
export const EnumParseTester_packed_arbitrary_ext: GenExtension<EnumParseTester, EnumParseTester_Arbitrary[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 100, 2);

/**
 * This message contains different kind of bool fields to exercise the different
 * parsers in table-drived.
 *
 * @generated from message proto2_unittest.BoolParseTester
 */
export type BoolParseTester = Message<"proto2_unittest.BoolParseTester"> & {
  /**
   * @generated from field: bool optional_bool_lowfield = 1;
   */
  optionalBoolLowfield: boolean;

  /**
   * @generated from field: bool optional_bool_midfield = 1001;
   */
  optionalBoolMidfield: boolean;

  /**
   * @generated from field: bool optional_bool_hifield = 1000001;
   */
  optionalBoolHifield: boolean;

  /**
   * @generated from field: repeated bool repeated_bool_lowfield = 2;
   */
  repeatedBoolLowfield: boolean[];

  /**
   * @generated from field: repeated bool repeated_bool_midfield = 1002;
   */
  repeatedBoolMidfield: boolean[];

  /**
   * @generated from field: repeated bool repeated_bool_hifield = 1000002;
   */
  repeatedBoolHifield: boolean[];

  /**
   * @generated from field: repeated bool packed_bool_lowfield = 3 [features.repeated_field_encoding = PACKED];
   */
  packedBoolLowfield: boolean[];

  /**
   * @generated from field: repeated bool packed_bool_midfield = 1003 [features.repeated_field_encoding = PACKED];
   */
  packedBoolMidfield: boolean[];

  /**
   * @generated from field: repeated bool packed_bool_hifield = 1000003 [features.repeated_field_encoding = PACKED];
   */
  packedBoolHifield: boolean[];

  /**
   * An arbitrary field we can append to to break the runs of repeated fields.
   *
   * @generated from field: int32 other_field = 99;
   */
  otherField: number;
};

/**
 * Describes the message proto2_unittest.BoolParseTester.
 * Use `create(BoolParseTesterSchema)` to create a new message.
 */
export const BoolParseTesterSchema: GenMessage<BoolParseTester> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 101);

/**
 * @generated from extension: bool optional_bool_ext = 2000000;
 */
export const BoolParseTester_optional_bool_ext: GenExtension<BoolParseTester, boolean> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 101, 0);

/**
 * @generated from extension: repeated bool repeated_bool_ext = 2000001;
 */
export const BoolParseTester_repeated_bool_ext: GenExtension<BoolParseTester, boolean[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 101, 1);

/**
 * @generated from extension: repeated bool packed_bool_ext = 2000002 [features.repeated_field_encoding = PACKED];
 */
export const BoolParseTester_packed_bool_ext: GenExtension<BoolParseTester, boolean[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 101, 2);

/**
 * @generated from message proto2_unittest.Int32ParseTester
 */
export type Int32ParseTester = Message<"proto2_unittest.Int32ParseTester"> & {
  /**
   * @generated from field: int32 optional_int32_lowfield = 1;
   */
  optionalInt32Lowfield: number;

  /**
   * @generated from field: int32 optional_int32_midfield = 1001;
   */
  optionalInt32Midfield: number;

  /**
   * @generated from field: int32 optional_int32_hifield = 1000001;
   */
  optionalInt32Hifield: number;

  /**
   * @generated from field: repeated int32 repeated_int32_lowfield = 2;
   */
  repeatedInt32Lowfield: number[];

  /**
   * @generated from field: repeated int32 repeated_int32_midfield = 1002;
   */
  repeatedInt32Midfield: number[];

  /**
   * @generated from field: repeated int32 repeated_int32_hifield = 1000002;
   */
  repeatedInt32Hifield: number[];

  /**
   * @generated from field: repeated int32 packed_int32_lowfield = 3 [features.repeated_field_encoding = PACKED];
   */
  packedInt32Lowfield: number[];

  /**
   * @generated from field: repeated int32 packed_int32_midfield = 1003 [features.repeated_field_encoding = PACKED];
   */
  packedInt32Midfield: number[];

  /**
   * @generated from field: repeated int32 packed_int32_hifield = 1000003 [features.repeated_field_encoding = PACKED];
   */
  packedInt32Hifield: number[];

  /**
   * An arbitrary field we can append to to break the runs of repeated fields.
   *
   * @generated from field: int32 other_field = 99;
   */
  otherField: number;
};

/**
 * Describes the message proto2_unittest.Int32ParseTester.
 * Use `create(Int32ParseTesterSchema)` to create a new message.
 */
export const Int32ParseTesterSchema: GenMessage<Int32ParseTester> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 102);

/**
 * @generated from extension: int32 optional_int32_ext = 2000000;
 */
export const Int32ParseTester_optional_int32_ext: GenExtension<Int32ParseTester, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 102, 0);

/**
 * @generated from extension: repeated int32 repeated_int32_ext = 2000001;
 */
export const Int32ParseTester_repeated_int32_ext: GenExtension<Int32ParseTester, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 102, 1);

/**
 * @generated from extension: repeated int32 packed_int32_ext = 2000002 [features.repeated_field_encoding = PACKED];
 */
export const Int32ParseTester_packed_int32_ext: GenExtension<Int32ParseTester, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 102, 2);

/**
 * @generated from message proto2_unittest.Int64ParseTester
 */
export type Int64ParseTester = Message<"proto2_unittest.Int64ParseTester"> & {
  /**
   * @generated from field: int64 optional_int64_lowfield = 1;
   */
  optionalInt64Lowfield: bigint;

  /**
   * @generated from field: int64 optional_int64_midfield = 1001;
   */
  optionalInt64Midfield: bigint;

  /**
   * @generated from field: int64 optional_int64_hifield = 1000001;
   */
  optionalInt64Hifield: bigint;

  /**
   * @generated from field: repeated int64 repeated_int64_lowfield = 2;
   */
  repeatedInt64Lowfield: bigint[];

  /**
   * @generated from field: repeated int64 repeated_int64_midfield = 1002;
   */
  repeatedInt64Midfield: bigint[];

  /**
   * @generated from field: repeated int64 repeated_int64_hifield = 1000002;
   */
  repeatedInt64Hifield: bigint[];

  /**
   * @generated from field: repeated int64 packed_int64_lowfield = 3 [features.repeated_field_encoding = PACKED];
   */
  packedInt64Lowfield: bigint[];

  /**
   * @generated from field: repeated int64 packed_int64_midfield = 1003 [features.repeated_field_encoding = PACKED];
   */
  packedInt64Midfield: bigint[];

  /**
   * @generated from field: repeated int64 packed_int64_hifield = 1000003 [features.repeated_field_encoding = PACKED];
   */
  packedInt64Hifield: bigint[];

  /**
   * An arbitrary field we can append to to break the runs of repeated fields.
   *
   * @generated from field: int32 other_field = 99;
   */
  otherField: number;
};

/**
 * Describes the message proto2_unittest.Int64ParseTester.
 * Use `create(Int64ParseTesterSchema)` to create a new message.
 */
export const Int64ParseTesterSchema: GenMessage<Int64ParseTester> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 103);

/**
 * @generated from extension: int64 optional_int64_ext = 2000000;
 */
export const Int64ParseTester_optional_int64_ext: GenExtension<Int64ParseTester, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 103, 0);

/**
 * @generated from extension: repeated int64 repeated_int64_ext = 2000001;
 */
export const Int64ParseTester_repeated_int64_ext: GenExtension<Int64ParseTester, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 103, 1);

/**
 * @generated from extension: repeated int64 packed_int64_ext = 2000002 [features.repeated_field_encoding = PACKED];
 */
export const Int64ParseTester_packed_int64_ext: GenExtension<Int64ParseTester, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 103, 2);

/**
 * @generated from message proto2_unittest.InlinedStringIdxRegressionProto
 */
export type InlinedStringIdxRegressionProto = Message<"proto2_unittest.InlinedStringIdxRegressionProto"> & {
  /**
   * We mix data to make sure aux ids and inlined string idx do not match.
   * aux_idx == inlined_string_idx == 1
   *
   * @generated from field: string str1 = 1;
   */
  str1: string;

  /**
   * aux_idx == 2
   *
   * @generated from field: proto2_unittest.InlinedStringIdxRegressionProto sub = 2;
   */
  sub?: InlinedStringIdxRegressionProto;

  /**
   * aux_idx == 3, inlined_string_idx == 2
   *
   * @generated from field: string str2 = 3;
   */
  str2: string;

  /**
   * aux_idx == 4, inlined_string_idx == 3
   *
   * @generated from field: bytes str3 = 4;
   */
  str3: Uint8Array;
};

/**
 * Describes the message proto2_unittest.InlinedStringIdxRegressionProto.
 * Use `create(InlinedStringIdxRegressionProtoSchema)` to create a new message.
 */
export const InlinedStringIdxRegressionProtoSchema: GenMessage<InlinedStringIdxRegressionProto> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 104);

/**
 * @generated from message proto2_unittest.StringParseTester
 */
export type StringParseTester = Message<"proto2_unittest.StringParseTester"> & {
  /**
   * @generated from field: string optional_string_lowfield = 1;
   */
  optionalStringLowfield: string;

  /**
   * @generated from field: string optional_string_midfield = 1001;
   */
  optionalStringMidfield: string;

  /**
   * @generated from field: string optional_string_hifield = 1000001;
   */
  optionalStringHifield: string;

  /**
   * @generated from field: repeated string repeated_string_lowfield = 2;
   */
  repeatedStringLowfield: string[];

  /**
   * @generated from field: repeated string repeated_string_midfield = 1002;
   */
  repeatedStringMidfield: string[];

  /**
   * @generated from field: repeated string repeated_string_hifield = 1000002;
   */
  repeatedStringHifield: string[];
};

/**
 * Describes the message proto2_unittest.StringParseTester.
 * Use `create(StringParseTesterSchema)` to create a new message.
 */
export const StringParseTesterSchema: GenMessage<StringParseTester> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 105);

/**
 * @generated from extension: string optional_string_ext = 2000000;
 */
export const StringParseTester_optional_string_ext: GenExtension<StringParseTester, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 105, 0);

/**
 * @generated from extension: repeated string repeated_string_ext = 2000001;
 */
export const StringParseTester_repeated_string_ext: GenExtension<StringParseTester, string[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 105, 1);

/**
 * @generated from message proto2_unittest.BadFieldNames
 */
export type BadFieldNames = Message<"proto2_unittest.BadFieldNames"> & {
  /**
   * @generated from field: int32 OptionalInt32 = 1;
   */
  OptionalInt32: number;

  /**
   * @generated from field: int32 for = 2;
   */
  for: number;
};

/**
 * Describes the message proto2_unittest.BadFieldNames.
 * Use `create(BadFieldNamesSchema)` to create a new message.
 */
export const BadFieldNamesSchema: GenMessage<BadFieldNames> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 106);

/**
 * @generated from message proto2_unittest.TestNestedMessageRedaction
 */
export type TestNestedMessageRedaction = Message<"proto2_unittest.TestNestedMessageRedaction"> & {
  /**
   * @generated from field: string optional_unredacted_nested_string = 1;
   */
  optionalUnredactedNestedString: string;

  /**
   * @generated from field: string optional_redacted_nested_string = 2;
   */
  optionalRedactedNestedString: string;
};

/**
 * Describes the message proto2_unittest.TestNestedMessageRedaction.
 * Use `create(TestNestedMessageRedactionSchema)` to create a new message.
 */
export const TestNestedMessageRedactionSchema: GenMessage<TestNestedMessageRedaction> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 107);

/**
 * @generated from message proto2_unittest.RedactedFields
 */
export type RedactedFields = Message<"proto2_unittest.RedactedFields"> & {
  /**
   * @generated from field: string optional_redacted_string = 1;
   */
  optionalRedactedString: string;

  /**
   * @generated from field: string optional_unredacted_string = 2;
   */
  optionalUnredactedString: string;

  /**
   * @generated from field: repeated string repeated_redacted_string = 3;
   */
  repeatedRedactedString: string[];

  /**
   * @generated from field: repeated string repeated_unredacted_string = 4;
   */
  repeatedUnredactedString: string[];

  /**
   * @generated from field: proto2_unittest.TestNestedMessageRedaction optional_redacted_message = 5;
   */
  optionalRedactedMessage?: TestNestedMessageRedaction;

  /**
   * @generated from field: proto2_unittest.TestNestedMessageRedaction optional_unredacted_message = 6;
   */
  optionalUnredactedMessage?: TestNestedMessageRedaction;

  /**
   * @generated from field: repeated proto2_unittest.TestNestedMessageRedaction repeated_redacted_message = 7;
   */
  repeatedRedactedMessage: TestNestedMessageRedaction[];

  /**
   * @generated from field: repeated proto2_unittest.TestNestedMessageRedaction repeated_unredacted_message = 8;
   */
  repeatedUnredactedMessage: TestNestedMessageRedaction[];

  /**
   * @generated from field: map<string, string> map_redacted_string = 9;
   */
  mapRedactedString: { [key: string]: string };

  /**
   * @generated from field: map<string, string> map_unredacted_string = 10;
   */
  mapUnredactedString: { [key: string]: string };

  /**
   * @generated from field: string optional_redacted_false_string = 11;
   */
  optionalRedactedFalseString: string;
};

/**
 * Describes the message proto2_unittest.RedactedFields.
 * Use `create(RedactedFieldsSchema)` to create a new message.
 */
export const RedactedFieldsSchema: GenMessage<RedactedFields> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 108);

/**
 * @generated from message proto2_unittest.TestString
 */
export type TestString = Message<"proto2_unittest.TestString"> & {
  /**
   * @generated from field: string optional_string = 1;
   */
  optionalString: string;
};

/**
 * Describes the message proto2_unittest.TestString.
 * Use `create(TestStringSchema)` to create a new message.
 */
export const TestStringSchema: GenMessage<TestString> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 109);

/**
 * @generated from message proto2_unittest.TestCord
 */
export type TestCord = Message<"proto2_unittest.TestCord"> & {
  /**
   * @generated from field: bytes optional_bytes_cord = 1;
   */
  optionalBytesCord: Uint8Array;

  /**
   * @generated from field: bytes optional_bytes_cord_default = 2 [default = "hello"];
   */
  optionalBytesCordDefault: Uint8Array;
};

/**
 * Describes the message proto2_unittest.TestCord.
 * Use `create(TestCordSchema)` to create a new message.
 */
export const TestCordSchema: GenMessage<TestCord> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 110);

/**
 * @generated from message proto2_unittest.TestPackedEnumSmallRange
 */
export type TestPackedEnumSmallRange = Message<"proto2_unittest.TestPackedEnumSmallRange"> & {
  /**
   * @generated from field: repeated proto2_unittest.TestPackedEnumSmallRange.NestedEnum vals = 1 [features.repeated_field_encoding = PACKED];
   */
  vals: TestPackedEnumSmallRange_NestedEnum[];
};

/**
 * Describes the message proto2_unittest.TestPackedEnumSmallRange.
 * Use `create(TestPackedEnumSmallRangeSchema)` to create a new message.
 */
export const TestPackedEnumSmallRangeSchema: GenMessage<TestPackedEnumSmallRange> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 111);

/**
 * @generated from enum proto2_unittest.TestPackedEnumSmallRange.NestedEnum
 */
export enum TestPackedEnumSmallRange_NestedEnum {
  /**
   * @generated from enum value: UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: FOO = 1;
   */
  FOO = 1,

  /**
   * @generated from enum value: BAR = 2;
   */
  BAR = 2,

  /**
   * @generated from enum value: BAZ = 3;
   */
  BAZ = 3,
}

/**
 * Describes the enum proto2_unittest.TestPackedEnumSmallRange.NestedEnum.
 */
export const TestPackedEnumSmallRange_NestedEnumSchema: GenEnum<TestPackedEnumSmallRange_NestedEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 111, 0);

/**
 * @generated from message proto2_unittest.EnumsForBenchmark
 */
export type EnumsForBenchmark = Message<"proto2_unittest.EnumsForBenchmark"> & {
};

/**
 * Describes the message proto2_unittest.EnumsForBenchmark.
 * Use `create(EnumsForBenchmarkSchema)` to create a new message.
 */
export const EnumsForBenchmarkSchema: GenMessage<EnumsForBenchmark> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 112);

/**
 * @generated from enum proto2_unittest.EnumsForBenchmark.Flat
 */
export enum EnumsForBenchmark_Flat {
  /**
   * @generated from enum value: A0 = 0;
   */
  A0 = 0,

  /**
   * @generated from enum value: A1 = 1;
   */
  A1 = 1,

  /**
   * @generated from enum value: A2 = 2;
   */
  A2 = 2,

  /**
   * @generated from enum value: A3 = 3;
   */
  A3 = 3,

  /**
   * @generated from enum value: A4 = 4;
   */
  A4 = 4,

  /**
   * @generated from enum value: A5 = 5;
   */
  A5 = 5,

  /**
   * @generated from enum value: A6 = 6;
   */
  A6 = 6,

  /**
   * @generated from enum value: A7 = 7;
   */
  A7 = 7,

  /**
   * @generated from enum value: A8 = 8;
   */
  A8 = 8,

  /**
   * @generated from enum value: A9 = 9;
   */
  A9 = 9,

  /**
   * @generated from enum value: A10 = 10;
   */
  A10 = 10,

  /**
   * @generated from enum value: A11 = 11;
   */
  A11 = 11,

  /**
   * @generated from enum value: A12 = 12;
   */
  A12 = 12,

  /**
   * @generated from enum value: A13 = 13;
   */
  A13 = 13,

  /**
   * @generated from enum value: A14 = 14;
   */
  A14 = 14,

  /**
   * @generated from enum value: A15 = 15;
   */
  A15 = 15,
}

/**
 * Describes the enum proto2_unittest.EnumsForBenchmark.Flat.
 */
export const EnumsForBenchmark_FlatSchema: GenEnum<EnumsForBenchmark_Flat> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 112, 0);

/**
 * Has a few holes, bitmap can be used.
 *
 * @generated from enum proto2_unittest.EnumsForBenchmark.AlmostFlat
 */
export enum EnumsForBenchmark_AlmostFlat {
  /**
   * @generated from enum value: B0 = 0;
   */
  B0 = 0,

  /**
   * @generated from enum value: B1 = 1;
   */
  B1 = 1,

  /**
   * @generated from enum value: B2 = 2;
   */
  B2 = 2,

  /**
   * @generated from enum value: B3 = 3;
   */
  B3 = 3,

  /**
   * @generated from enum value: B5 = 5;
   */
  B5 = 5,

  /**
   * @generated from enum value: B6 = 6;
   */
  B6 = 6,

  /**
   * @generated from enum value: B7 = 7;
   */
  B7 = 7,

  /**
   * @generated from enum value: B8 = 8;
   */
  B8 = 8,

  /**
   * @generated from enum value: B9 = 9;
   */
  B9 = 9,

  /**
   * @generated from enum value: B11 = 11;
   */
  B11 = 11,

  /**
   * @generated from enum value: B12 = 12;
   */
  B12 = 12,

  /**
   * @generated from enum value: B13 = 13;
   */
  B13 = 13,

  /**
   * @generated from enum value: B14 = 14;
   */
  B14 = 14,

  /**
   * @generated from enum value: B15 = 15;
   */
  B15 = 15,

  /**
   * @generated from enum value: B17 = 17;
   */
  B17 = 17,

  /**
   * @generated from enum value: B19 = 19;
   */
  B19 = 19,
}

/**
 * Describes the enum proto2_unittest.EnumsForBenchmark.AlmostFlat.
 */
export const EnumsForBenchmark_AlmostFlatSchema: GenEnum<EnumsForBenchmark_AlmostFlat> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 112, 1);

/**
 * @generated from enum proto2_unittest.EnumsForBenchmark.Sparse
 */
export enum EnumsForBenchmark_Sparse {
  /**
   * @generated from enum value: C536 = 536;
   */
  C536 = 536,

  /**
   * @generated from enum value: C8387 = 8387;
   */
  C8387 = 8387,

  /**
   * @generated from enum value: C9673 = 9673;
   */
  C9673 = 9673,

  /**
   * @generated from enum value: C10285 = 10285;
   */
  C10285 = 10285,

  /**
   * @generated from enum value: C13318 = 13318;
   */
  C13318 = 13318,

  /**
   * @generated from enum value: C15963 = 15963;
   */
  C15963 = 15963,

  /**
   * @generated from enum value: C16439 = 16439;
   */
  C16439 = 16439,

  /**
   * @generated from enum value: C18197 = 18197;
   */
  C18197 = 18197,

  /**
   * @generated from enum value: C19430 = 19430;
   */
  C19430 = 19430,

  /**
   * @generated from enum value: C20361 = 20361;
   */
  C20361 = 20361,

  /**
   * @generated from enum value: C20706 = 20706;
   */
  C20706 = 20706,

  /**
   * @generated from enum value: C21050 = 21050;
   */
  C21050 = 21050,

  /**
   * @generated from enum value: C21906 = 21906;
   */
  C21906 = 21906,

  /**
   * @generated from enum value: C27265 = 27265;
   */
  C27265 = 27265,

  /**
   * @generated from enum value: C30109 = 30109;
   */
  C30109 = 30109,

  /**
   * @generated from enum value: C31670 = 31670;
   */
  C31670 = 31670,
}

/**
 * Describes the enum proto2_unittest.EnumsForBenchmark.Sparse.
 */
export const EnumsForBenchmark_SparseSchema: GenEnum<EnumsForBenchmark_Sparse> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 112, 2);

/**
 * @generated from message proto2_unittest.TestMessageWithManyRepeatedPtrFields
 */
export type TestMessageWithManyRepeatedPtrFields = Message<"proto2_unittest.TestMessageWithManyRepeatedPtrFields"> & {
  /**
   * @generated from field: repeated string repeated_string_1 = 1;
   */
  repeatedString1: string[];

  /**
   * @generated from field: repeated string repeated_string_2 = 2;
   */
  repeatedString2: string[];

  /**
   * @generated from field: repeated string repeated_string_3 = 3;
   */
  repeatedString3: string[];

  /**
   * @generated from field: repeated string repeated_string_4 = 4;
   */
  repeatedString4: string[];

  /**
   * @generated from field: repeated string repeated_string_5 = 5;
   */
  repeatedString5: string[];

  /**
   * @generated from field: repeated string repeated_string_6 = 6;
   */
  repeatedString6: string[];

  /**
   * @generated from field: repeated string repeated_string_7 = 7;
   */
  repeatedString7: string[];

  /**
   * @generated from field: repeated string repeated_string_8 = 8;
   */
  repeatedString8: string[];

  /**
   * @generated from field: repeated string repeated_string_9 = 9;
   */
  repeatedString9: string[];

  /**
   * @generated from field: repeated string repeated_string_10 = 10;
   */
  repeatedString10: string[];

  /**
   * @generated from field: repeated string repeated_string_11 = 11;
   */
  repeatedString11: string[];

  /**
   * @generated from field: repeated string repeated_string_12 = 12;
   */
  repeatedString12: string[];

  /**
   * @generated from field: repeated string repeated_string_13 = 13;
   */
  repeatedString13: string[];

  /**
   * @generated from field: repeated string repeated_string_14 = 14;
   */
  repeatedString14: string[];

  /**
   * @generated from field: repeated string repeated_string_15 = 15;
   */
  repeatedString15: string[];

  /**
   * @generated from field: repeated string repeated_string_16 = 16;
   */
  repeatedString16: string[];

  /**
   * @generated from field: repeated string repeated_string_17 = 17;
   */
  repeatedString17: string[];

  /**
   * @generated from field: repeated string repeated_string_18 = 18;
   */
  repeatedString18: string[];

  /**
   * @generated from field: repeated string repeated_string_19 = 19;
   */
  repeatedString19: string[];

  /**
   * @generated from field: repeated string repeated_string_20 = 20;
   */
  repeatedString20: string[];

  /**
   * @generated from field: repeated string repeated_string_21 = 21;
   */
  repeatedString21: string[];

  /**
   * @generated from field: repeated string repeated_string_22 = 22;
   */
  repeatedString22: string[];

  /**
   * @generated from field: repeated string repeated_string_23 = 23;
   */
  repeatedString23: string[];

  /**
   * @generated from field: repeated string repeated_string_24 = 24;
   */
  repeatedString24: string[];

  /**
   * @generated from field: repeated string repeated_string_25 = 25;
   */
  repeatedString25: string[];

  /**
   * @generated from field: repeated string repeated_string_26 = 26;
   */
  repeatedString26: string[];

  /**
   * @generated from field: repeated string repeated_string_27 = 27;
   */
  repeatedString27: string[];

  /**
   * @generated from field: repeated string repeated_string_28 = 28;
   */
  repeatedString28: string[];

  /**
   * @generated from field: repeated string repeated_string_29 = 29;
   */
  repeatedString29: string[];

  /**
   * @generated from field: repeated string repeated_string_30 = 30;
   */
  repeatedString30: string[];

  /**
   * @generated from field: repeated string repeated_string_31 = 31;
   */
  repeatedString31: string[];

  /**
   * @generated from field: repeated string repeated_string_32 = 32;
   */
  repeatedString32: string[];
};

/**
 * Describes the message proto2_unittest.TestMessageWithManyRepeatedPtrFields.
 * Use `create(TestMessageWithManyRepeatedPtrFieldsSchema)` to create a new message.
 */
export const TestMessageWithManyRepeatedPtrFieldsSchema: GenMessage<TestMessageWithManyRepeatedPtrFields> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 113);

/**
 * @generated from message proto2_unittest.MessageCreatorZeroInit
 */
export type MessageCreatorZeroInit = Message<"proto2_unittest.MessageCreatorZeroInit"> & {
  /**
   * @generated from field: int32 i = 1;
   */
  i: number;

  /**
   * @generated from field: double d = 2;
   */
  d: number;

  /**
   * @generated from field: proto2_unittest.MessageCreatorZeroInit m = 3;
   */
  m?: MessageCreatorZeroInit;

  /**
   * @generated from oneof proto2_unittest.MessageCreatorZeroInit.one
   */
  one: {
    /**
     * @generated from field: string os = 10;
     */
    value: string;
    case: "os";
  } | {
    /**
     * @generated from field: string oc = 11;
     */
    value: string;
    case: "oc";
  } | {
    /**
     * @generated from field: fixed64 of = 12;
     */
    value: bigint;
    case: "of";
  } | {
    /**
     * @generated from field: proto2_unittest.MessageCreatorZeroInit ol = 13;
     */
    value: MessageCreatorZeroInit;
    case: "ol";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto2_unittest.MessageCreatorZeroInit.
 * Use `create(MessageCreatorZeroInitSchema)` to create a new message.
 */
export const MessageCreatorZeroInitSchema: GenMessage<MessageCreatorZeroInit> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 114);

/**
 * @generated from message proto2_unittest.MessageCreatorMemcpy
 */
export type MessageCreatorMemcpy = Message<"proto2_unittest.MessageCreatorMemcpy"> & {
  /**
   * @generated from field: string s = 1;
   */
  s: string;

  /**
   * @generated from field: repeated int32 i = 2 [features.repeated_field_encoding = PACKED];
   */
  i: number[];

  /**
   * @generated from field: proto2_unittest.MessageCreatorMemcpy m = 3;
   */
  m?: MessageCreatorMemcpy;

  /**
   * @generated from field: map<int32, int32> m2 = 4;
   */
  m2: { [key: number]: number };
};

/**
 * Describes the message proto2_unittest.MessageCreatorMemcpy.
 * Use `create(MessageCreatorMemcpySchema)` to create a new message.
 */
export const MessageCreatorMemcpySchema: GenMessage<MessageCreatorMemcpy> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 115);

/**
 * @generated from message proto2_unittest.MessageCreatorFunc
 */
export type MessageCreatorFunc = Message<"proto2_unittest.MessageCreatorFunc"> & {
  /**
   * This one is ArenaDtorNeeds::kRequired so we must run the constructor.
   *
   * @generated from field: string c = 3;
   */
  c: string;
};

/**
 * Describes the message proto2_unittest.MessageCreatorFunc.
 * Use `create(MessageCreatorFuncSchema)` to create a new message.
 */
export const MessageCreatorFuncSchema: GenMessage<MessageCreatorFunc> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 116);

/**
 * @generated from message proto2_unittest.FastParseTableCompression
 */
export type FastParseTableCompression = Message<"proto2_unittest.FastParseTableCompression"> & {
  /**
   * @generated from field: int32 important_field_1 = 1;
   */
  importantField1: number;

  /**
   * @generated from field: int32 important_field_2 = 2;
   */
  importantField2: number;

  /**
   * @generated from field: int32 unimportant_field_3 = 3;
   */
  unimportantField3: number;

  /**
   * @generated from field: int32 unimportant_field_4 = 4;
   */
  unimportantField4: number;

  /**
   * @generated from field: int32 unimportant_field_5 = 5;
   */
  unimportantField5: number;

  /**
   * @generated from field: int32 unimportant_field_9 = 9;
   */
  unimportantField9: number;

  /**
   * @generated from field: int32 important_field_11 = 11;
   */
  importantField11: number;

  /**
   * @generated from field: int32 unimportant_field_12 = 12;
   */
  unimportantField12: number;

  /**
   * @generated from field: int32 important_field_14 = 14;
   */
  importantField14: number;

  /**
   * @generated from field: int32 unimportant_field_15 = 15;
   */
  unimportantField15: number;
};

/**
 * Describes the message proto2_unittest.FastParseTableCompression.
 * Use `create(FastParseTableCompressionSchema)` to create a new message.
 */
export const FastParseTableCompressionSchema: GenMessage<FastParseTableCompression> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 117);

/**
 * @generated from message proto2_unittest.TestMessageForMove_Small
 */
export type TestMessageForMove_Small = Message<"proto2_unittest.TestMessageForMove_Small"> & {
  /**
   * @generated from field: int32 a = 1;
   */
  a: number;

  /**
   * @generated from field: int32 b = 2;
   */
  b: number;
};

/**
 * Describes the message proto2_unittest.TestMessageForMove_Small.
 * Use `create(TestMessageForMove_SmallSchema)` to create a new message.
 */
export const TestMessageForMove_SmallSchema: GenMessage<TestMessageForMove_Small> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 118);

/**
 * @generated from message proto2_unittest.TestMessageForMove_Large
 */
export type TestMessageForMove_Large = Message<"proto2_unittest.TestMessageForMove_Large"> & {
  /**
   * @generated from field: int32 a1 = 1;
   */
  a1: number;

  /**
   * @generated from field: int32 a2 = 2;
   */
  a2: number;

  /**
   * @generated from field: int32 a3 = 3;
   */
  a3: number;

  /**
   * @generated from field: int32 a4 = 4;
   */
  a4: number;

  /**
   * @generated from field: int32 a5 = 5;
   */
  a5: number;

  /**
   * @generated from field: int32 a6 = 6;
   */
  a6: number;

  /**
   * @generated from field: int32 a7 = 7;
   */
  a7: number;

  /**
   * @generated from field: int32 a8 = 8;
   */
  a8: number;

  /**
   * @generated from field: int32 a9 = 9;
   */
  a9: number;

  /**
   * @generated from field: repeated int32 a11 = 11;
   */
  a11: number[];

  /**
   * @generated from field: repeated int32 a12 = 12;
   */
  a12: number[];

  /**
   * @generated from field: repeated int32 a13 = 13;
   */
  a13: number[];

  /**
   * @generated from field: repeated int32 a14 = 14;
   */
  a14: number[];

  /**
   * @generated from field: repeated int32 a15 = 15;
   */
  a15: number[];

  /**
   * @generated from field: repeated int32 a16 = 16;
   */
  a16: number[];

  /**
   * @generated from field: repeated int32 a17 = 17;
   */
  a17: number[];

  /**
   * @generated from field: repeated int32 a18 = 18;
   */
  a18: number[];

  /**
   * @generated from field: repeated int32 a19 = 19;
   */
  a19: number[];

  /**
   * @generated from field: string s101 = 101;
   */
  s101: string;

  /**
   * @generated from field: string s102 = 102;
   */
  s102: string;

  /**
   * @generated from field: string s103 = 103;
   */
  s103: string;

  /**
   * @generated from field: string s104 = 104;
   */
  s104: string;

  /**
   * @generated from field: string s105 = 105;
   */
  s105: string;

  /**
   * @generated from field: string s106 = 106;
   */
  s106: string;

  /**
   * @generated from field: string s107 = 107;
   */
  s107: string;

  /**
   * @generated from field: string s108 = 108;
   */
  s108: string;

  /**
   * @generated from field: string s109 = 109;
   */
  s109: string;

  /**
   * @generated from field: repeated string s111 = 111;
   */
  s111: string[];

  /**
   * @generated from field: repeated string s112 = 112;
   */
  s112: string[];

  /**
   * @generated from field: repeated string s113 = 113;
   */
  s113: string[];

  /**
   * @generated from field: repeated string s114 = 114;
   */
  s114: string[];

  /**
   * @generated from field: repeated string s115 = 115;
   */
  s115: string[];

  /**
   * @generated from field: repeated string s116 = 116;
   */
  s116: string[];

  /**
   * @generated from field: repeated string s117 = 117;
   */
  s117: string[];

  /**
   * @generated from field: repeated string s118 = 118;
   */
  s118: string[];

  /**
   * @generated from field: repeated string s119 = 119;
   */
  s119: string[];
};

/**
 * Describes the message proto2_unittest.TestMessageForMove_Large.
 * Use `create(TestMessageForMove_LargeSchema)` to create a new message.
 */
export const TestMessageForMove_LargeSchema: GenMessage<TestMessageForMove_Large> = /*@__PURE__*/
  messageDesc(file_google_protobuf_unittest, 119);

/**
 * @generated from enum proto2_unittest.ForeignEnum
 */
export enum ForeignEnum {
  /**
   * @generated from enum value: FOREIGN_FOO = 4;
   */
  FOREIGN_FOO = 4,

  /**
   * @generated from enum value: FOREIGN_BAR = 5;
   */
  FOREIGN_BAR = 5,

  /**
   * @generated from enum value: FOREIGN_BAZ = 6;
   */
  FOREIGN_BAZ = 6,

  /**
   * (1 << 32) to generate a 64b bitmask would be incorrect.
   *
   * @generated from enum value: FOREIGN_BAX = 32;
   */
  FOREIGN_BAX = 32,

  /**
   * Large enough to escape the Boxed Integer cache.
   *
   * @generated from enum value: FOREIGN_LARGE = 123456;
   */
  FOREIGN_LARGE = 123456,
}

/**
 * Describes the enum proto2_unittest.ForeignEnum.
 */
export const ForeignEnumSchema: GenEnum<ForeignEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 0);

/**
 * @generated from enum proto2_unittest.TestReservedEnumFields
 */
export enum TestReservedEnumFields {
  /**
   * @generated from enum value: UNKNOWN = 0;
   */
  UNKNOWN = 0,
}

/**
 * Describes the enum proto2_unittest.TestReservedEnumFields.
 */
export const TestReservedEnumFieldsSchema: GenEnum<TestReservedEnumFields> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 1);

/**
 * Required and open enum accepts invalid enum values.
 *
 * @generated from enum proto2_unittest.ForeignOpenEnum
 * @generated with option features.enum_type = OPEN
 */
export enum ForeignOpenEnum {
  /**
   * @generated from enum value: FOREIGN_OPEN_UNKNOWN = 0;
   */
  FOREIGN_OPEN_UNKNOWN = 0,

  /**
   * @generated from enum value: FOREIGN_OPEN_FOO = 4;
   */
  FOREIGN_OPEN_FOO = 4,

  /**
   * @generated from enum value: FOREIGN_OPEN_BAR = 5;
   */
  FOREIGN_OPEN_BAR = 5,

  /**
   * @generated from enum value: FOREIGN_OPEN_BAZ = 6;
   */
  FOREIGN_OPEN_BAZ = 6,

  /**
   * (1 << 32) to generate a 64b bitmask would be
   *
   * @generated from enum value: FOREIGN_OPEN_BAX = 32;
   */
  FOREIGN_OPEN_BAX = 32,
}

/**
 * Describes the enum proto2_unittest.ForeignOpenEnum.
 */
export const ForeignOpenEnumSchema: GenEnum<ForeignOpenEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 2);

/**
 * Test an enum that has multiple values with the same number.
 *
 * @generated from enum proto2_unittest.TestEnumWithDupValue
 */
export enum TestEnumWithDupValue {
  /**
   * @generated from enum value: FOO1 = 1;
   */
  FOO1 = 1,

  /**
   * @generated from enum value: BAR1 = 2;
   */
  BAR1 = 2,

  /**
   * @generated from enum value: BAZ = 3;
   */
  BAZ = 3,

  /**
   * @generated from enum value: FOO2 = 1;
   */
  FOO2 = 1,

  /**
   * @generated from enum value: BAR2 = 2;
   */
  BAR2 = 2,
}

/**
 * Describes the enum proto2_unittest.TestEnumWithDupValue.
 */
export const TestEnumWithDupValueSchema: GenEnum<TestEnumWithDupValue> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 3);

/**
 * Test an enum with large, unordered values.
 *
 * @generated from enum proto2_unittest.TestSparseEnum
 */
export enum TestSparseEnum {
  /**
   * @generated from enum value: SPARSE_A = 123;
   */
  SPARSE_A = 123,

  /**
   * @generated from enum value: SPARSE_B = 62374;
   */
  SPARSE_B = 62374,

  /**
   * @generated from enum value: SPARSE_C = 12589234;
   */
  SPARSE_C = 12589234,

  /**
   * @generated from enum value: SPARSE_D = -15;
   */
  SPARSE_D = -15,

  /**
   * @generated from enum value: SPARSE_E = -53452;
   */
  SPARSE_E = -53452,

  /**
   * @generated from enum value: SPARSE_F = 0;
   */
  SPARSE_F = 0,

  /**
   * @generated from enum value: SPARSE_G = 2;
   */
  SPARSE_G = 2,
}

/**
 * Describes the enum proto2_unittest.TestSparseEnum.
 */
export const TestSparseEnumSchema: GenEnum<TestSparseEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 4);

/**
 * @generated from enum proto2_unittest.VeryLargeEnum
 */
export enum VeryLargeEnum {
  /**
   * @generated from enum value: ENUM_LABEL_DEFAULT = 0;
   */
  ENUM_LABEL_DEFAULT = 0,

  /**
   * @generated from enum value: ENUM_LABEL_1 = 1;
   */
  ENUM_LABEL_1 = 1,

  /**
   * @generated from enum value: ENUM_LABEL_2 = 2;
   */
  ENUM_LABEL_2 = 2,

  /**
   * @generated from enum value: ENUM_LABEL_3 = 3;
   */
  ENUM_LABEL_3 = 3,

  /**
   * @generated from enum value: ENUM_LABEL_4 = 4;
   */
  ENUM_LABEL_4 = 4,

  /**
   * @generated from enum value: ENUM_LABEL_5 = 5;
   */
  ENUM_LABEL_5 = 5,

  /**
   * @generated from enum value: ENUM_LABEL_6 = 6;
   */
  ENUM_LABEL_6 = 6,

  /**
   * @generated from enum value: ENUM_LABEL_7 = 7;
   */
  ENUM_LABEL_7 = 7,

  /**
   * @generated from enum value: ENUM_LABEL_8 = 8;
   */
  ENUM_LABEL_8 = 8,

  /**
   * @generated from enum value: ENUM_LABEL_9 = 9;
   */
  ENUM_LABEL_9 = 9,

  /**
   * @generated from enum value: ENUM_LABEL_10 = 10;
   */
  ENUM_LABEL_10 = 10,

  /**
   * @generated from enum value: ENUM_LABEL_11 = 11;
   */
  ENUM_LABEL_11 = 11,

  /**
   * @generated from enum value: ENUM_LABEL_12 = 12;
   */
  ENUM_LABEL_12 = 12,

  /**
   * @generated from enum value: ENUM_LABEL_13 = 13;
   */
  ENUM_LABEL_13 = 13,

  /**
   * @generated from enum value: ENUM_LABEL_14 = 14;
   */
  ENUM_LABEL_14 = 14,

  /**
   * @generated from enum value: ENUM_LABEL_15 = 15;
   */
  ENUM_LABEL_15 = 15,

  /**
   * @generated from enum value: ENUM_LABEL_16 = 16;
   */
  ENUM_LABEL_16 = 16,

  /**
   * @generated from enum value: ENUM_LABEL_17 = 17;
   */
  ENUM_LABEL_17 = 17,

  /**
   * @generated from enum value: ENUM_LABEL_18 = 18;
   */
  ENUM_LABEL_18 = 18,

  /**
   * @generated from enum value: ENUM_LABEL_19 = 19;
   */
  ENUM_LABEL_19 = 19,

  /**
   * @generated from enum value: ENUM_LABEL_20 = 20;
   */
  ENUM_LABEL_20 = 20,

  /**
   * @generated from enum value: ENUM_LABEL_21 = 21;
   */
  ENUM_LABEL_21 = 21,

  /**
   * @generated from enum value: ENUM_LABEL_22 = 22;
   */
  ENUM_LABEL_22 = 22,

  /**
   * @generated from enum value: ENUM_LABEL_23 = 23;
   */
  ENUM_LABEL_23 = 23,

  /**
   * @generated from enum value: ENUM_LABEL_24 = 24;
   */
  ENUM_LABEL_24 = 24,

  /**
   * @generated from enum value: ENUM_LABEL_25 = 25;
   */
  ENUM_LABEL_25 = 25,

  /**
   * @generated from enum value: ENUM_LABEL_26 = 26;
   */
  ENUM_LABEL_26 = 26,

  /**
   * @generated from enum value: ENUM_LABEL_27 = 27;
   */
  ENUM_LABEL_27 = 27,

  /**
   * @generated from enum value: ENUM_LABEL_28 = 28;
   */
  ENUM_LABEL_28 = 28,

  /**
   * @generated from enum value: ENUM_LABEL_29 = 29;
   */
  ENUM_LABEL_29 = 29,

  /**
   * @generated from enum value: ENUM_LABEL_30 = 30;
   */
  ENUM_LABEL_30 = 30,

  /**
   * @generated from enum value: ENUM_LABEL_31 = 31;
   */
  ENUM_LABEL_31 = 31,

  /**
   * @generated from enum value: ENUM_LABEL_32 = 32;
   */
  ENUM_LABEL_32 = 32,

  /**
   * @generated from enum value: ENUM_LABEL_33 = 33;
   */
  ENUM_LABEL_33 = 33,

  /**
   * @generated from enum value: ENUM_LABEL_34 = 34;
   */
  ENUM_LABEL_34 = 34,

  /**
   * @generated from enum value: ENUM_LABEL_35 = 35;
   */
  ENUM_LABEL_35 = 35,

  /**
   * @generated from enum value: ENUM_LABEL_36 = 36;
   */
  ENUM_LABEL_36 = 36,

  /**
   * @generated from enum value: ENUM_LABEL_37 = 37;
   */
  ENUM_LABEL_37 = 37,

  /**
   * @generated from enum value: ENUM_LABEL_38 = 38;
   */
  ENUM_LABEL_38 = 38,

  /**
   * @generated from enum value: ENUM_LABEL_39 = 39;
   */
  ENUM_LABEL_39 = 39,

  /**
   * @generated from enum value: ENUM_LABEL_40 = 40;
   */
  ENUM_LABEL_40 = 40,

  /**
   * @generated from enum value: ENUM_LABEL_41 = 41;
   */
  ENUM_LABEL_41 = 41,

  /**
   * @generated from enum value: ENUM_LABEL_42 = 42;
   */
  ENUM_LABEL_42 = 42,

  /**
   * @generated from enum value: ENUM_LABEL_43 = 43;
   */
  ENUM_LABEL_43 = 43,

  /**
   * @generated from enum value: ENUM_LABEL_44 = 44;
   */
  ENUM_LABEL_44 = 44,

  /**
   * @generated from enum value: ENUM_LABEL_45 = 45;
   */
  ENUM_LABEL_45 = 45,

  /**
   * @generated from enum value: ENUM_LABEL_46 = 46;
   */
  ENUM_LABEL_46 = 46,

  /**
   * @generated from enum value: ENUM_LABEL_47 = 47;
   */
  ENUM_LABEL_47 = 47,

  /**
   * @generated from enum value: ENUM_LABEL_48 = 48;
   */
  ENUM_LABEL_48 = 48,

  /**
   * @generated from enum value: ENUM_LABEL_49 = 49;
   */
  ENUM_LABEL_49 = 49,

  /**
   * @generated from enum value: ENUM_LABEL_50 = 50;
   */
  ENUM_LABEL_50 = 50,

  /**
   * @generated from enum value: ENUM_LABEL_51 = 51;
   */
  ENUM_LABEL_51 = 51,

  /**
   * @generated from enum value: ENUM_LABEL_52 = 52;
   */
  ENUM_LABEL_52 = 52,

  /**
   * @generated from enum value: ENUM_LABEL_53 = 53;
   */
  ENUM_LABEL_53 = 53,

  /**
   * @generated from enum value: ENUM_LABEL_54 = 54;
   */
  ENUM_LABEL_54 = 54,

  /**
   * @generated from enum value: ENUM_LABEL_55 = 55;
   */
  ENUM_LABEL_55 = 55,

  /**
   * @generated from enum value: ENUM_LABEL_56 = 56;
   */
  ENUM_LABEL_56 = 56,

  /**
   * @generated from enum value: ENUM_LABEL_57 = 57;
   */
  ENUM_LABEL_57 = 57,

  /**
   * @generated from enum value: ENUM_LABEL_58 = 58;
   */
  ENUM_LABEL_58 = 58,

  /**
   * @generated from enum value: ENUM_LABEL_59 = 59;
   */
  ENUM_LABEL_59 = 59,

  /**
   * @generated from enum value: ENUM_LABEL_60 = 60;
   */
  ENUM_LABEL_60 = 60,

  /**
   * @generated from enum value: ENUM_LABEL_61 = 61;
   */
  ENUM_LABEL_61 = 61,

  /**
   * @generated from enum value: ENUM_LABEL_62 = 62;
   */
  ENUM_LABEL_62 = 62,

  /**
   * @generated from enum value: ENUM_LABEL_63 = 63;
   */
  ENUM_LABEL_63 = 63,

  /**
   * @generated from enum value: ENUM_LABEL_64 = 64;
   */
  ENUM_LABEL_64 = 64,

  /**
   * @generated from enum value: ENUM_LABEL_65 = 65;
   */
  ENUM_LABEL_65 = 65,

  /**
   * @generated from enum value: ENUM_LABEL_66 = 66;
   */
  ENUM_LABEL_66 = 66,

  /**
   * @generated from enum value: ENUM_LABEL_67 = 67;
   */
  ENUM_LABEL_67 = 67,

  /**
   * @generated from enum value: ENUM_LABEL_68 = 68;
   */
  ENUM_LABEL_68 = 68,

  /**
   * @generated from enum value: ENUM_LABEL_69 = 69;
   */
  ENUM_LABEL_69 = 69,

  /**
   * @generated from enum value: ENUM_LABEL_70 = 70;
   */
  ENUM_LABEL_70 = 70,

  /**
   * @generated from enum value: ENUM_LABEL_71 = 71;
   */
  ENUM_LABEL_71 = 71,

  /**
   * @generated from enum value: ENUM_LABEL_72 = 72;
   */
  ENUM_LABEL_72 = 72,

  /**
   * @generated from enum value: ENUM_LABEL_73 = 73;
   */
  ENUM_LABEL_73 = 73,

  /**
   * @generated from enum value: ENUM_LABEL_74 = 74;
   */
  ENUM_LABEL_74 = 74,

  /**
   * @generated from enum value: ENUM_LABEL_75 = 75;
   */
  ENUM_LABEL_75 = 75,

  /**
   * @generated from enum value: ENUM_LABEL_76 = 76;
   */
  ENUM_LABEL_76 = 76,

  /**
   * @generated from enum value: ENUM_LABEL_77 = 77;
   */
  ENUM_LABEL_77 = 77,

  /**
   * @generated from enum value: ENUM_LABEL_78 = 78;
   */
  ENUM_LABEL_78 = 78,

  /**
   * @generated from enum value: ENUM_LABEL_79 = 79;
   */
  ENUM_LABEL_79 = 79,

  /**
   * @generated from enum value: ENUM_LABEL_80 = 80;
   */
  ENUM_LABEL_80 = 80,

  /**
   * @generated from enum value: ENUM_LABEL_81 = 81;
   */
  ENUM_LABEL_81 = 81,

  /**
   * @generated from enum value: ENUM_LABEL_82 = 82;
   */
  ENUM_LABEL_82 = 82,

  /**
   * @generated from enum value: ENUM_LABEL_83 = 83;
   */
  ENUM_LABEL_83 = 83,

  /**
   * @generated from enum value: ENUM_LABEL_84 = 84;
   */
  ENUM_LABEL_84 = 84,

  /**
   * @generated from enum value: ENUM_LABEL_85 = 85;
   */
  ENUM_LABEL_85 = 85,

  /**
   * @generated from enum value: ENUM_LABEL_86 = 86;
   */
  ENUM_LABEL_86 = 86,

  /**
   * @generated from enum value: ENUM_LABEL_87 = 87;
   */
  ENUM_LABEL_87 = 87,

  /**
   * @generated from enum value: ENUM_LABEL_88 = 88;
   */
  ENUM_LABEL_88 = 88,

  /**
   * @generated from enum value: ENUM_LABEL_89 = 89;
   */
  ENUM_LABEL_89 = 89,

  /**
   * @generated from enum value: ENUM_LABEL_90 = 90;
   */
  ENUM_LABEL_90 = 90,

  /**
   * @generated from enum value: ENUM_LABEL_91 = 91;
   */
  ENUM_LABEL_91 = 91,

  /**
   * @generated from enum value: ENUM_LABEL_92 = 92;
   */
  ENUM_LABEL_92 = 92,

  /**
   * @generated from enum value: ENUM_LABEL_93 = 93;
   */
  ENUM_LABEL_93 = 93,

  /**
   * @generated from enum value: ENUM_LABEL_94 = 94;
   */
  ENUM_LABEL_94 = 94,

  /**
   * @generated from enum value: ENUM_LABEL_95 = 95;
   */
  ENUM_LABEL_95 = 95,

  /**
   * @generated from enum value: ENUM_LABEL_96 = 96;
   */
  ENUM_LABEL_96 = 96,

  /**
   * @generated from enum value: ENUM_LABEL_97 = 97;
   */
  ENUM_LABEL_97 = 97,

  /**
   * @generated from enum value: ENUM_LABEL_98 = 98;
   */
  ENUM_LABEL_98 = 98,

  /**
   * @generated from enum value: ENUM_LABEL_99 = 99;
   */
  ENUM_LABEL_99 = 99,

  /**
   * @generated from enum value: ENUM_LABEL_100 = 100;
   */
  ENUM_LABEL_100 = 100,
}

/**
 * Describes the enum proto2_unittest.VeryLargeEnum.
 */
export const VeryLargeEnumSchema: GenEnum<VeryLargeEnum> = /*@__PURE__*/
  enumDesc(file_google_protobuf_unittest, 5);

/**
 * @generated from service proto2_unittest.TestService
 */
export const TestService: GenService<{
  /**
   * @generated from rpc proto2_unittest.TestService.Foo
   */
  foo: {
    methodKind: "unary";
    input: typeof FooRequestSchema;
    output: typeof FooResponseSchema;
  },
  /**
   * @generated from rpc proto2_unittest.TestService.Bar
   */
  bar: {
    methodKind: "unary";
    input: typeof BarRequestSchema;
    output: typeof BarResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_google_protobuf_unittest, 0);

/**
 * Singular
 *
 * @generated from extension: int32 optional_int32_extension = 1;
 */
export const optional_int32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 0);

/**
 * @generated from extension: int64 optional_int64_extension = 2;
 */
export const optional_int64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 1);

/**
 * @generated from extension: uint32 optional_uint32_extension = 3;
 */
export const optional_uint32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 2);

/**
 * @generated from extension: uint64 optional_uint64_extension = 4;
 */
export const optional_uint64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 3);

/**
 * @generated from extension: sint32 optional_sint32_extension = 5;
 */
export const optional_sint32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 4);

/**
 * @generated from extension: sint64 optional_sint64_extension = 6;
 */
export const optional_sint64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 5);

/**
 * @generated from extension: fixed32 optional_fixed32_extension = 7;
 */
export const optional_fixed32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 6);

/**
 * @generated from extension: fixed64 optional_fixed64_extension = 8;
 */
export const optional_fixed64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 7);

/**
 * @generated from extension: sfixed32 optional_sfixed32_extension = 9;
 */
export const optional_sfixed32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 8);

/**
 * @generated from extension: sfixed64 optional_sfixed64_extension = 10;
 */
export const optional_sfixed64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 9);

/**
 * @generated from extension: float optional_float_extension = 11;
 */
export const optional_float_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 10);

/**
 * @generated from extension: double optional_double_extension = 12;
 */
export const optional_double_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 11);

/**
 * @generated from extension: bool optional_bool_extension = 13;
 */
export const optional_bool_extension: GenExtension<TestAllExtensions, boolean> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 12);

/**
 * @generated from extension: string optional_string_extension = 14;
 */
export const optional_string_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 13);

/**
 * @generated from extension: bytes optional_bytes_extension = 15;
 */
export const optional_bytes_extension: GenExtension<TestAllExtensions, Uint8Array> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 14);

/**
 * @generated from extension: proto2_unittest.OptionalGroup_extension optionalgroup_extension = 16 [features.message_encoding = DELIMITED];
 */
export const optionalgroup_extension: GenExtension<TestAllExtensions, OptionalGroup_extension> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 15);

/**
 * @generated from extension: proto2_unittest.TestAllTypes.NestedMessage optional_nested_message_extension = 18;
 */
export const optional_nested_message_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedMessage> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 16);

/**
 * @generated from extension: proto2_unittest.ForeignMessage optional_foreign_message_extension = 19;
 */
export const optional_foreign_message_extension: GenExtension<TestAllExtensions, ForeignMessage> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 17);

/**
 * @generated from extension: proto2_unittest_import.ImportMessage optional_import_message_extension = 20;
 */
export const optional_import_message_extension: GenExtension<TestAllExtensions, ImportMessage> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 18);

/**
 * @generated from extension: proto2_unittest.TestAllTypes.NestedEnum optional_nested_enum_extension = 21;
 */
export const optional_nested_enum_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedEnum> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 19);

/**
 * @generated from extension: proto2_unittest.ForeignEnum optional_foreign_enum_extension = 22;
 */
export const optional_foreign_enum_extension: GenExtension<TestAllExtensions, ForeignEnum> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 20);

/**
 * @generated from extension: proto2_unittest_import.ImportEnum optional_import_enum_extension = 23;
 */
export const optional_import_enum_extension: GenExtension<TestAllExtensions, ImportEnum> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 21);

/**
 * @generated from extension: string optional_string_piece_extension = 24;
 */
export const optional_string_piece_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 22);

/**
 * TODO: ctype=CORD is not supported for extension. Add
 * ctype=CORD option back after it is supported.
 *
 * @generated from extension: string optional_cord_extension = 25;
 */
export const optional_cord_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 23);

/**
 * @generated from extension: bytes optional_bytes_cord_extension = 86;
 */
export const optional_bytes_cord_extension: GenExtension<TestAllExtensions, Uint8Array> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 24);

/**
 * @generated from extension: proto2_unittest_import.PublicImportMessage optional_public_import_message_extension = 26;
 */
export const optional_public_import_message_extension: GenExtension<TestAllExtensions, PublicImportMessage> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 25);

/**
 * @generated from extension: proto2_unittest.TestAllTypes.NestedMessage optional_lazy_message_extension = 27;
 */
export const optional_lazy_message_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedMessage> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 26);

/**
 * @generated from extension: proto2_unittest.TestAllTypes.NestedMessage optional_unverified_lazy_message_extension = 28;
 */
export const optional_unverified_lazy_message_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedMessage> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 27);

/**
 * Repeated
 *
 * @generated from extension: repeated int32 repeated_int32_extension = 31;
 */
export const repeated_int32_extension: GenExtension<TestAllExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 28);

/**
 * @generated from extension: repeated int64 repeated_int64_extension = 32;
 */
export const repeated_int64_extension: GenExtension<TestAllExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 29);

/**
 * @generated from extension: repeated uint32 repeated_uint32_extension = 33;
 */
export const repeated_uint32_extension: GenExtension<TestAllExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 30);

/**
 * @generated from extension: repeated uint64 repeated_uint64_extension = 34;
 */
export const repeated_uint64_extension: GenExtension<TestAllExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 31);

/**
 * @generated from extension: repeated sint32 repeated_sint32_extension = 35;
 */
export const repeated_sint32_extension: GenExtension<TestAllExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 32);

/**
 * @generated from extension: repeated sint64 repeated_sint64_extension = 36;
 */
export const repeated_sint64_extension: GenExtension<TestAllExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 33);

/**
 * @generated from extension: repeated fixed32 repeated_fixed32_extension = 37;
 */
export const repeated_fixed32_extension: GenExtension<TestAllExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 34);

/**
 * @generated from extension: repeated fixed64 repeated_fixed64_extension = 38;
 */
export const repeated_fixed64_extension: GenExtension<TestAllExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 35);

/**
 * @generated from extension: repeated sfixed32 repeated_sfixed32_extension = 39;
 */
export const repeated_sfixed32_extension: GenExtension<TestAllExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 36);

/**
 * @generated from extension: repeated sfixed64 repeated_sfixed64_extension = 40;
 */
export const repeated_sfixed64_extension: GenExtension<TestAllExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 37);

/**
 * @generated from extension: repeated float repeated_float_extension = 41;
 */
export const repeated_float_extension: GenExtension<TestAllExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 38);

/**
 * @generated from extension: repeated double repeated_double_extension = 42;
 */
export const repeated_double_extension: GenExtension<TestAllExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 39);

/**
 * @generated from extension: repeated bool repeated_bool_extension = 43;
 */
export const repeated_bool_extension: GenExtension<TestAllExtensions, boolean[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 40);

/**
 * @generated from extension: repeated string repeated_string_extension = 44;
 */
export const repeated_string_extension: GenExtension<TestAllExtensions, string[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 41);

/**
 * @generated from extension: repeated bytes repeated_bytes_extension = 45;
 */
export const repeated_bytes_extension: GenExtension<TestAllExtensions, Uint8Array[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 42);

/**
 * @generated from extension: repeated proto2_unittest.RepeatedGroup_extension repeatedgroup_extension = 46 [features.message_encoding = DELIMITED];
 */
export const repeatedgroup_extension: GenExtension<TestAllExtensions, RepeatedGroup_extension[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 43);

/**
 * @generated from extension: repeated proto2_unittest.TestAllTypes.NestedMessage repeated_nested_message_extension = 48;
 */
export const repeated_nested_message_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedMessage[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 44);

/**
 * @generated from extension: repeated proto2_unittest.ForeignMessage repeated_foreign_message_extension = 49;
 */
export const repeated_foreign_message_extension: GenExtension<TestAllExtensions, ForeignMessage[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 45);

/**
 * @generated from extension: repeated proto2_unittest_import.ImportMessage repeated_import_message_extension = 50;
 */
export const repeated_import_message_extension: GenExtension<TestAllExtensions, ImportMessage[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 46);

/**
 * @generated from extension: repeated proto2_unittest.TestAllTypes.NestedEnum repeated_nested_enum_extension = 51;
 */
export const repeated_nested_enum_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedEnum[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 47);

/**
 * @generated from extension: repeated proto2_unittest.ForeignEnum repeated_foreign_enum_extension = 52;
 */
export const repeated_foreign_enum_extension: GenExtension<TestAllExtensions, ForeignEnum[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 48);

/**
 * @generated from extension: repeated proto2_unittest_import.ImportEnum repeated_import_enum_extension = 53;
 */
export const repeated_import_enum_extension: GenExtension<TestAllExtensions, ImportEnum[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 49);

/**
 * @generated from extension: repeated string repeated_string_piece_extension = 54;
 */
export const repeated_string_piece_extension: GenExtension<TestAllExtensions, string[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 50);

/**
 * TODO: ctype=CORD is not supported for extension. Add
 * ctype=CORD option back after it is supported.
 *
 * @generated from extension: repeated string repeated_cord_extension = 55;
 */
export const repeated_cord_extension: GenExtension<TestAllExtensions, string[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 51);

/**
 * @generated from extension: repeated proto2_unittest.TestAllTypes.NestedMessage repeated_lazy_message_extension = 57;
 */
export const repeated_lazy_message_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedMessage[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 52);

/**
 * Singular with defaults
 *
 * @generated from extension: int32 default_int32_extension = 61 [default = 41];
 */
export const default_int32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 53);

/**
 * @generated from extension: int64 default_int64_extension = 62 [default = 42];
 */
export const default_int64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 54);

/**
 * @generated from extension: uint32 default_uint32_extension = 63 [default = 43];
 */
export const default_uint32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 55);

/**
 * @generated from extension: uint64 default_uint64_extension = 64 [default = 44];
 */
export const default_uint64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 56);

/**
 * @generated from extension: sint32 default_sint32_extension = 65 [default = -45];
 */
export const default_sint32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 57);

/**
 * @generated from extension: sint64 default_sint64_extension = 66 [default = 46];
 */
export const default_sint64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 58);

/**
 * @generated from extension: fixed32 default_fixed32_extension = 67 [default = 47];
 */
export const default_fixed32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 59);

/**
 * @generated from extension: fixed64 default_fixed64_extension = 68 [default = 48];
 */
export const default_fixed64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 60);

/**
 * @generated from extension: sfixed32 default_sfixed32_extension = 69 [default = 49];
 */
export const default_sfixed32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 61);

/**
 * @generated from extension: sfixed64 default_sfixed64_extension = 70 [default = -50];
 */
export const default_sfixed64_extension: GenExtension<TestAllExtensions, bigint> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 62);

/**
 * @generated from extension: float default_float_extension = 71 [default = 51.5];
 */
export const default_float_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 63);

/**
 * @generated from extension: double default_double_extension = 72 [default = 52000];
 */
export const default_double_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 64);

/**
 * @generated from extension: bool default_bool_extension = 73 [default = true];
 */
export const default_bool_extension: GenExtension<TestAllExtensions, boolean> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 65);

/**
 * @generated from extension: string default_string_extension = 74 [default = "hello"];
 */
export const default_string_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 66);

/**
 * @generated from extension: bytes default_bytes_extension = 75 [default = "world"];
 */
export const default_bytes_extension: GenExtension<TestAllExtensions, Uint8Array> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 67);

/**
 * @generated from extension: proto2_unittest.TestAllTypes.NestedEnum default_nested_enum_extension = 81 [default = BAR];
 */
export const default_nested_enum_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedEnum> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 68);

/**
 * @generated from extension: proto2_unittest.ForeignEnum default_foreign_enum_extension = 82 [default = FOREIGN_BAR];
 */
export const default_foreign_enum_extension: GenExtension<TestAllExtensions, ForeignEnum> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 69);

/**
 * @generated from extension: proto2_unittest_import.ImportEnum default_import_enum_extension = 83 [default = IMPORT_BAR];
 */
export const default_import_enum_extension: GenExtension<TestAllExtensions, ImportEnum> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 70);

/**
 * @generated from extension: string default_string_piece_extension = 84 [default = "abc"];
 */
export const default_string_piece_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 71);

/**
 * TODO: ctype=CORD is not supported for extension. Add
 * ctype=CORD option back after it is supported.
 *
 * @generated from extension: string default_cord_extension = 85 [default = "123"];
 */
export const default_cord_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 72);

/**
 * For oneof test
 *
 * @generated from extension: uint32 oneof_uint32_extension = 111;
 */
export const oneof_uint32_extension: GenExtension<TestAllExtensions, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 73);

/**
 * @generated from extension: proto2_unittest.TestAllTypes.NestedMessage oneof_nested_message_extension = 112;
 */
export const oneof_nested_message_extension: GenExtension<TestAllExtensions, TestAllTypes_NestedMessage> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 74);

/**
 * @generated from extension: string oneof_string_extension = 113;
 */
export const oneof_string_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 75);

/**
 * @generated from extension: bytes oneof_bytes_extension = 114;
 */
export const oneof_bytes_extension: GenExtension<TestAllExtensions, Uint8Array> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 76);

/**
 * @generated from extension: string optional_utf8_string_extension = 115 [features.utf8_validation = VERIFY];
 */
export const optional_utf8_string_extension: GenExtension<TestAllExtensions, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 77);

/**
 * @generated from extension: repeated string repeated_utf8_string_extension = 116 [features.utf8_validation = VERIFY];
 */
export const repeated_utf8_string_extension: GenExtension<TestAllExtensions, string[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 78);

/**
 * Singular message containing required fields; used to test initialization.
 *
 * @generated from extension: proto2_unittest.TestRequired required_message_extension = 117;
 */
export const required_message_extension: GenExtension<TestAllExtensions, TestRequired> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 79);

/**
 * @generated from extension: string my_extension_string = 50;
 */
export const my_extension_string: GenExtension<TestFieldOrderings, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 80);

/**
 * @generated from extension: int32 my_extension_int = 5;
 */
export const my_extension_int: GenExtension<TestFieldOrderings, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 81);

/**
 * @generated from extension: repeated int32 packed_int32_extension = 90 [features.repeated_field_encoding = PACKED];
 */
export const packed_int32_extension: GenExtension<TestPackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 82);

/**
 * @generated from extension: repeated int64 packed_int64_extension = 91 [features.repeated_field_encoding = PACKED];
 */
export const packed_int64_extension: GenExtension<TestPackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 83);

/**
 * @generated from extension: repeated uint32 packed_uint32_extension = 92 [features.repeated_field_encoding = PACKED];
 */
export const packed_uint32_extension: GenExtension<TestPackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 84);

/**
 * @generated from extension: repeated uint64 packed_uint64_extension = 93 [features.repeated_field_encoding = PACKED];
 */
export const packed_uint64_extension: GenExtension<TestPackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 85);

/**
 * @generated from extension: repeated sint32 packed_sint32_extension = 94 [features.repeated_field_encoding = PACKED];
 */
export const packed_sint32_extension: GenExtension<TestPackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 86);

/**
 * @generated from extension: repeated sint64 packed_sint64_extension = 95 [features.repeated_field_encoding = PACKED];
 */
export const packed_sint64_extension: GenExtension<TestPackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 87);

/**
 * @generated from extension: repeated fixed32 packed_fixed32_extension = 96 [features.repeated_field_encoding = PACKED];
 */
export const packed_fixed32_extension: GenExtension<TestPackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 88);

/**
 * @generated from extension: repeated fixed64 packed_fixed64_extension = 97 [features.repeated_field_encoding = PACKED];
 */
export const packed_fixed64_extension: GenExtension<TestPackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 89);

/**
 * @generated from extension: repeated sfixed32 packed_sfixed32_extension = 98 [features.repeated_field_encoding = PACKED];
 */
export const packed_sfixed32_extension: GenExtension<TestPackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 90);

/**
 * @generated from extension: repeated sfixed64 packed_sfixed64_extension = 99 [features.repeated_field_encoding = PACKED];
 */
export const packed_sfixed64_extension: GenExtension<TestPackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 91);

/**
 * @generated from extension: repeated float packed_float_extension = 100 [features.repeated_field_encoding = PACKED];
 */
export const packed_float_extension: GenExtension<TestPackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 92);

/**
 * @generated from extension: repeated double packed_double_extension = 101 [features.repeated_field_encoding = PACKED];
 */
export const packed_double_extension: GenExtension<TestPackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 93);

/**
 * @generated from extension: repeated bool packed_bool_extension = 102 [features.repeated_field_encoding = PACKED];
 */
export const packed_bool_extension: GenExtension<TestPackedExtensions, boolean[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 94);

/**
 * @generated from extension: repeated proto2_unittest.ForeignEnum packed_enum_extension = 103 [features.repeated_field_encoding = PACKED];
 */
export const packed_enum_extension: GenExtension<TestPackedExtensions, ForeignEnum[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 95);

/**
 * @generated from extension: repeated int32 unpacked_int32_extension = 90;
 */
export const unpacked_int32_extension: GenExtension<TestUnpackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 96);

/**
 * @generated from extension: repeated int64 unpacked_int64_extension = 91;
 */
export const unpacked_int64_extension: GenExtension<TestUnpackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 97);

/**
 * @generated from extension: repeated uint32 unpacked_uint32_extension = 92;
 */
export const unpacked_uint32_extension: GenExtension<TestUnpackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 98);

/**
 * @generated from extension: repeated uint64 unpacked_uint64_extension = 93;
 */
export const unpacked_uint64_extension: GenExtension<TestUnpackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 99);

/**
 * @generated from extension: repeated sint32 unpacked_sint32_extension = 94;
 */
export const unpacked_sint32_extension: GenExtension<TestUnpackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 100);

/**
 * @generated from extension: repeated sint64 unpacked_sint64_extension = 95;
 */
export const unpacked_sint64_extension: GenExtension<TestUnpackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 101);

/**
 * @generated from extension: repeated fixed32 unpacked_fixed32_extension = 96;
 */
export const unpacked_fixed32_extension: GenExtension<TestUnpackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 102);

/**
 * @generated from extension: repeated fixed64 unpacked_fixed64_extension = 97;
 */
export const unpacked_fixed64_extension: GenExtension<TestUnpackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 103);

/**
 * @generated from extension: repeated sfixed32 unpacked_sfixed32_extension = 98;
 */
export const unpacked_sfixed32_extension: GenExtension<TestUnpackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 104);

/**
 * @generated from extension: repeated sfixed64 unpacked_sfixed64_extension = 99;
 */
export const unpacked_sfixed64_extension: GenExtension<TestUnpackedExtensions, bigint[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 105);

/**
 * @generated from extension: repeated float unpacked_float_extension = 100;
 */
export const unpacked_float_extension: GenExtension<TestUnpackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 106);

/**
 * @generated from extension: repeated double unpacked_double_extension = 101;
 */
export const unpacked_double_extension: GenExtension<TestUnpackedExtensions, number[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 107);

/**
 * @generated from extension: repeated bool unpacked_bool_extension = 102;
 */
export const unpacked_bool_extension: GenExtension<TestUnpackedExtensions, boolean[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 108);

/**
 * @generated from extension: repeated proto2_unittest.ForeignEnum unpacked_enum_extension = 103;
 */
export const unpacked_enum_extension: GenExtension<TestUnpackedExtensions, ForeignEnum[]> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 109);

/**
 * @generated from extension: proto2_unittest.TestAllTypes test_all_types = 536860000;
 */
export const test_all_types: GenExtension<TestHugeFieldNumbers, TestAllTypes> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 110);

/**
 * @generated from extension: int32 test_extension_inside_table_extension = 5;
 */
export const test_extension_inside_table_extension: GenExtension<TestExtensionInsideTable, number> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 111);

/**
 * @generated from extension: proto2_unittest.TestNestedGroupExtensionInnerExtension inner = 3;
 */
export const inner: GenExtension<TestNestedGroupExtensionOuter_Layer1OptionalGroup_Layer2RepeatedGroup, TestNestedGroupExtensionInnerExtension> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 112);

/**
 * @generated from extension: string redacted_extension = 20;
 */
export const redacted_extension: GenExtension<RedactedFields, string> = /*@__PURE__*/
  extDesc(file_google_protobuf_unittest, 113);

